我的apache web服务器将所有http流量重写为https,但有一个url(example.com/facebook/any_word)我不想重写。 我想如果我将此规则置于将所有http重写为https并将标志L放入其中的规则之上 - 它将起作用。但事实并非如此。我做错了什么?
.htaccess文件:
RewriteRule ^/facebook/(.*)?$ /index.php/$0 [PT,L] #this rule is not applied...
#...other rules which rewrites http to https....
答案 0 :(得分:1)
您可以启用mod_rewrite调试以确保您认为实际发生的事情。将类似于以下内容的内容放入虚拟主机配置中:
RewriteLogLevel 8
RewriteLog /var/log/rewrite.log
请注意,此语法在Apache 2.4中已更改,因此如果未运行,则可能需要更改它< Apache 2.4。
答案 1 :(得分:1)
这样的事情应该有效:
RewriteCond %{REQUEST_URI} !/facebook [NC]
#...other rules which rewrites http to https...
RewriteRule ^/facebook/(.*)?$ /index.php/$0 [PT,L]
我假设最后一条规则按预期工作。
如果没有测试最后一条规则,我会建议这样的事情:
替换上面的规则:
RewriteRule ^/facebook/(.*)?$ /index.php/$0 [PT,L]
这两行:
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule ^facebook/(.*)/?$ /index.php/facebook/$1 [NC,L]