我正在使用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/,这是一个错误的网址。
有任何想法解决这个问题吗?
答案 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]