为了将所有somefolder/index.html (以及somefolder/index.htm )redirect到somefolder/我在Apache .htaccess文件中使用这个简单的重写规则:
RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html? HTTP/ RewriteRule ^(.*)index.html?$ "/$1" [R=301,L]
这效果很好!
但在Google组织中,他们还build议增加:
Options +FollowSymlinks RewriteBase /
任何人都可以如此善意地解释我为什么要添加这些最后一行,并解释一下他们是什么意思,他们做什么?
使用.htaccess(ErrorDocument 404 +重写规则)为某些文件types设置Web服务器句柄404错误
https非www到https www
laravel和wordpress在同一个域(子文件夹中的laravel)
Apacheredirect到htaccess子目录
有没有添加这些线潜在的安全风险?
非常感谢,
特定文件的mod_rewriteexception
重写引擎.htaccess MIMEtypes错误
.htaccess将所有stream量redirect到一个页面(410 Gone)
使用查询string将urlredirect到url友好的目录,例如url
使用Apacheclosures特定文件的caching
为什么他们建议:
建议您添加Options +FollowSymlinks因为有必要启用mod_rewrite的符号链接以使其可以正常工作,并且有可能允许您打开它,但主服务器配置不会启用它。 我怀疑之所以符号链接以下是必要的,因为该模块进行了一些调用apr_stat() ,这看起来像它需要遵循符号链接,以获得所有情况下的文件信息。
至于RewriteBase ,通常没有必要。 文档还在继续 ,但是由于大多数人的文件都存在于DocumentRoot某个地方,所以通常只在外部重定向时使用,而且使用与目录相关的URL。 为了说明我的意思,请考虑以下几点:
RewriteEngine On RewriteRule ^redirect index.html [R,L]
对example.com/redirect的请求将导致外部重定向到example.com/full/path/to/web/root/index.html 。 原因是在处理重定向之前,mod_rewrite会重新附加当前目录路径(这是RewriteBase的默认值)。 如果您将RewriteBase修改为/ ,则路径信息将被替换为该字符串,因此对index.html的请求现在将成为/index.html的请求。
请注意,无论RewriteBase的值如何,您都可以在替换上明确地做到这RewriteBase :
RewriteEngine On RewriteRule ^redirect /index.html [R,L]
例如,按预期工作。 但是,如果你有很多规则需要一个共同的基础,并且在目录之间转移,或者你的内容不在根目录下,那么在这种情况下适当地设置RewriteBase会很有用。
不使用它们的风险:
在没有指定Options +FollowSymlinks的情况下绝对没有安全风险,因为如果你不这样做并且它没有被主服务器配置设置,mod_rewrite将总是返回403 Forbidden。 对于试图查看您的内容的用户来说,这是一个问题,但是绝对不会给他们任何利用代码的机会。
不设置RewriteBase可能会暴露您的网页内容的路径,如果你有一个.htaccess文件中配置不当的规则集,但我不确定是否有任何理由考虑到安全风险。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。