Apache VirtualHosts 和 Mod_Rewrite 的新手,但我明白了。
我在这里阅读了几个主题并关注了它们,尝试了它们,但我仍然没有得到我正在寻找的结果。
我的目标:
- 强制所有传入请求为 HTTPS ,但进入 /feed 的提要除外
这样做的目的是为了 feedburner,因此我们可以通过 https 提供我们的网页,但 feedburner 仍然能够处理来自 wordpress 的本机提要。
这是我正在尝试的当前重写规则:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/feed
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteLog /xxxx/xxxx/logs/rewrite_log
RewriteLogLevel 3
<Directory />
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</Directory>
如果我输入 www.mydomain.net/feed 并且 url 以 www.mydomain.net 结尾,上述内容会迫使我返回主页。尽管正如我所料,它迫使一切都使用 HTTPS。
通过以下重写规则,我可以得到相反的工作(在 /feed 上强制 HTTPS 和在其他任何东西上强制 HTTP):
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/feed
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteLog /xxx/xxx/logs/rewrite_log
RewriteLogLevel 3
<Directory />
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</Directory>
但是,当我尝试像这样反转该语句时,它不起作用并强制 https 到 /feed。
wordpress 是否正在做一些违反我的规则的事情?不是 100% 确定 Directory/ 块在做什么,但我相信这是由 wordpress 放入的。