2

我在一个 wordpress 网站上工作。并且刚刚安装了 SSL。它已正确安装,但我只想将访问者重定向到某些页面的 https url。我还想强制浏览器对其他页面使用 http。

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

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

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

更新 1

我还有一个将非 www url 重定向到 www url 的规则,这可能与这些规则冲突。这是我将所有非 www url 重定向到 www url 的方法。

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/这是一个错误的 URL。

有什么办法解决这个问题吗?

4

3 回答 3

3

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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]
于 2012-10-18T16:15:38.673 回答
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

于 2012-10-18T16:10:59.523 回答
0

我还没有尝试过,但你能像处理 cononcial URL 一样处理它吗?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com/your-page
RewriteRule (.*) https://www.example.com/your-page [R=301,L]
于 2012-10-18T16:11:22.493 回答