Apache VirtualHosts和Mod_Rewrite的新手,但我明白了。
我在这里阅读了几个主题,然后全部跟着它们,尝试了它们,我仍然没有得到我正在搜索的结果。
我的目标:
这一点适用于feedburner,因此我们可以通过https提供我们的网页,但feedburner仍然可以处理来自wordpress的本地Feed。
以下是我正在尝试的当前重写规则:
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并且网址结束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%确定目录/块正在做什么,但是我相信这是由wordpress投入的。
答案 0 :(得分:1)
试试这个:
RewriteEngine On
#check if https is off, force it on for all except /feed
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/feed [NC]
RewriteCond %{REQUEST_FILENAME} !index\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
#check if https is on, turn off for /feed
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/feed/(.*) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/feed/%1 [R=301,L]
RewriteLog /xxx/xxx/logs/rewrite_log
RewriteLogLevel 3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/server-status$ [NC]
RewriteRule ^(.*)$ index.php/$1 [L,QSA]