将一个Wordpress页面从HTTPS重定向到HTTP

时间:2015-01-19 19:47:15

标签: wordpress .htaccess

我已经检查了我可以在这里找到的所有相关问题(以及一般的谷歌),并尝试了所有不同的解决方案,但是还没有能够让它发挥作用。

我正在使用最近通过SSL的Wordpress网站。我已将其设置为通过调整管理区域中的“设置”页面将所有页面强制为https,将相应的行添加到wp-config文件以强制管理端为https并将我的htaccess文件修改为以下内容:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/branding/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteRule ^branding/ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

这就是我想要做的事情......
1)http://www.example.com/(以及除品牌外的所有子页面)被重定向到https://example.com
2)http://example.com/branding保持原样 3)https://example.com/branding被重定向到http://example.com/branding

上面的htaccess代码可以强制http:到https:,但是,如果我输入http://example.com/brandinghttps://example.com/branding,我会被重定向到https://example.com

我已经使用了初始重写代码的多种变体并将其放置在不同的地方(如此处对类似问题的各种其他答案中所指示的那样),而不会对结果进行任何更改。

如果有人能告诉我我的错误在哪里以及如何解决,我们将非常感激。

3 个答案:

答案 0 :(得分:0)

试试这个:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/branding/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


RewriteCond %{HTTPS} on
RewriteRule ^branding(.*) http://%{HTTP_HOST}/branding$1 [R=301,L]

答案 1 :(得分:0)

在同事的帮助下,我们得到了解决方案。这是更新后的代码...

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/branding/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/branding/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

htaccess文件中特定于WP的规则会导致一些奇怪的情况发生。主要的一个是从/ branding /到/index.php进行内部重写,然后WP在PHP中处理请求。文件检查将处理检查以确保index.php文件存在。 WP将在内部处理重定向不具有斜杠的有效页面请求。

答案 2 :(得分:0)

一直在搜索这几个小时...如果您需要将多个页面重定向到https的http,可以进行调整。

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/page1|page2|page3/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/page1|page2|page3/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]