Php Mod_rewrite:有两个重写规则的奇怪行为
我已配置以下规则:Php Mod_rewrite:有两个重写规则的奇怪行为,php,apache,.htaccess,symfony,mod-rewrite,Php,Apache,.htaccess,Symfony,Mod Rewrite,我已配置以下规则: <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_URI} !^/foo/bar.php RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) ht
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/foo/bar.php
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteCond %{HTTP_HOST} ^(domain.com|www.domain.com)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/app.php [QSA,L]
</IfModule>
选项-多视图
重新启动发动机
重写cond%{REQUEST_URI}^/foo/bar.php
重写cond%{HTTPS}=在…上
重写规则^/?(*)https://%{SERVER_NAME}/$1[R,L]
重写cond%{HTTP_HOST}^(domain.com | www.domain.com)
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$web/app.php[QSA,L]
我希望所有使用HTTP的请求都被重定向到HTTPS,但特定路径除外:/foo/bar.php
第二条规则将所有内容重定向到web/app.php脚本(Symfony2)
现在一切都正常了,只是当我查询时,我被重定向到了
如果我质疑的话,它运行得很好
这对我来说毫无意义,为什么我会被重定向到“”?我错过什么了吗
谢谢 在第一条规则中使用
REQUEST
变量,而不是REQUEST\u URI
_REQUEST
变量表示Apache从浏览器收到的原始请求,在执行某些重写规则后不会被覆盖
Options -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} !/foo/bar.php
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=302,L]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ web/app.php [QSA,L]
妈的,很好用,非常感谢!(也谢谢你清理了第二条规则!:D)