.htaccess的开头是
RewriteEngine On
#begin of rules for administration folder, redirect to https, if not https
RewriteCond %{REQUEST_URI} ^/administration
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L=301]
#end of rules for administration folder
#===no rules for /administration folder below this line===
#the rest part of .htaccess
为什么.htaccess的其余部分仍然适用于https://www.mydomain.com/administration/index.php
?如何停止执行管理文件夹后面的网址的.htaccess文件的其余部分?我的代码有什么问题?
谢谢。
答案 0 :(得分:3)
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 1 :(得分:1)
在.htaccess文件的顶部添加此行:
RewriteRule ^administration - [NC,L]
答案 2 :(得分:0)
这些天我有同样的问题,我在PHP聊天中得到了用户DaveRandom的一个非常有趣的答案:
“基本上,mod_rewrite有效地在一个循环中运行(这不是真的,但实际上就是这样),并且[L]标志就像PHP中的”continue“语句一样(它停止处理下面的规则)当前迭代,但它将从顶部开始再次处理规则。所以在你的规则中,第一次迭代匹配第一个规则,然后第二次迭代跳过第一个规则(它产生与输入相同的输出)和然后匹配第二条规则。“
可能的解决方案:“如果您使用[END]而不是[L]使用apache 2.4将是一个修复”。
答案 3 :(得分:-1)
这是因为你有语法错误。 .htaccess将忽略错误行
更改: -
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L=301]
对此: -
RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301]