0

我的 apache 网络服务器将所有 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....
4

2 回答 2

1

您可以启用 mod_rewrite 调试以确保您认为应该发生的事情实际上正在发生。将类似于以下内容的内容放入您的虚拟主机配置中:

RewriteLogLevel 8
RewriteLog /var/log/rewrite.log

请注意,此语法在 Apache 2.4 中已更改,因此如果未运行 < Apache 2.4,您可能需要更改它。

于 2013-03-21T14:31:15.597 回答
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]

有了这 2 行:

RewriteCond %{REQUEST_URI} !index\.php                [NC]
RewriteRule ^facebook/(.*)/?$ /index.php/facebook/$1 [NC,L]
于 2013-03-21T14:45:44.153 回答