仅针对wordpress网站重定向到某个网址的https

时间:2012-10-18 16:04:24

标签: wordpress apache .htaccess mod-rewrite https

我正在使用wordpress网站。刚刚安装了SSL。它已正确安装,但我想将访问者重定向到某些页面的https网址。我还想强制浏览器将http用于其他页面。

我知道这可以用.htaccess完成并尝试了几件事。但是无法按照我的需要得到这个。我是处理.haccess重写规则的新手,无法找到可以指导我的文档。

例如,我需要强制浏览器为这两个网址使用https: http://www.example.com/sells/payment/ http://www.example.com/customer/login/

并且所有其他网址都强制使用普通的http。我需要写什么样的规则?

更新1

我还有一条规则,将非www网址重定向到www网址,这可能与这些规则冲突。以下是我将所有非www网址重定向到www网址的方法。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

我面临的问题是,在应用https规则后,它会被重定向到https://www.www.example.com/sells/payment/,这是一个错误的网址。

有任何想法解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(sells/payment|customer/login)/ - [E=MY_URL:1]

RewriteCond %{HTTPS} off
RewriteCond %{ENV:MY_URL} 1
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

RewriteCond %{HTTPS} on
RewriteCond %{ENV:MY_URL} !=1
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

更新

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(sells/payment|customer/login)/ - [E=MY_URL:1]

RewriteCond %{HTTPS} off
RewriteCond %{ENV:MY_URL} 1
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

RewriteCond %{HTTPS} on
RewriteCond %{ENV:MY_URL} !=1
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

答案 1 :(得分:1)

这是我在我的项目中一直使用的,我和你一样有类似的用例:

RewriteCond %{SERVER_PORT}s ^(443(s)|[0-9]+s)$
RewriteRule ^(.+)$ - [env=askapache:%2]

# redirect urls with index.html to folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html\ HTTP/
RewriteRule ^(([^/]+/)*)index\.html$ http%{ENV:askapache}://%{HTTP_HOST}/$1 [R=301,L]

# change // to /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)//(.*)\ HTTP/ [NC]
RewriteRule ^.*$ http%{ENV:askapache}://%{HTTP_HOST}/%1/%2 [R=301,L]

这是我找到解决方案的网站的摘录,所以我不能相信它: Smart HTTP and HTTPS .htaccess Rewrite

答案 2 :(得分:0)

我还没有尝试过,但是你可以像对待网址一样处理它吗?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com/your-page
RewriteRule (.*) https://www.example.com/your-page [R=301,L]