【发布时间】:2018-08-20 09:31:52
【问题描述】:
我有一个客户,他有一个 http SEO 的 wordpress 网站,带有 https AdWords 静态 html 登录页面(我知道 - 不要问)。 他们想 301 所有非 www 到 www。我尝试了以下 htaccess 代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
这非常适合将所有 URL 从非 www 重定向到 www。但是,它也会将所有 https URL 更改为 http。
我怎样才能让所有非www重定向到www,但http和https不受影响。
例如:
http://example.com/seo-page -> http://www.example.com/seo-page
和
https://example.com/ppc-page -> https://www.example.com/ppc-page
谢谢
美国东部时间: 现有的 .htaccess 是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* - [E=CANONICAL:http://%{HTTP_HOST}%{REQUEST_URI},NE]
RewriteCond %{HTTPS} =on
RewriteRule .* - [E=CANONICAL:https://%{HTTP_HOST}%{REQUEST_URI},NE]
</IfModule>
【问题讨论】:
-
我想您必须为每种情况分别执行此操作,因为实际上没有办法将此信息作为反向引用或类似 AFAIK 的东西。一个额外的 RewriteCond 检查 HTTPS,在明确重写为
https://...的规则之前。 -
谢谢@CBroe。知道怎么做吗?我宁愿不单独执行它们,因为大约有 100 个 https ppc 登录页面 - 以及超过 400 个 http SEO 页面。
-
在每种情况下,我指的是 HTTP 和 HTTPS,而不是每个单独的 URL ...
-
好的。如何?我对 .htaccess 的了解相当有限
标签: .htaccess redirect url-redirection