重写网址并停止重写

时间:2013-03-21 14:25:16

标签: apache mod-rewrite

我的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....

2 个答案:

答案 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]