Apache-2.2
如何使用.htaccess將非www重定向到www而不進行硬編碼?
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
…導致從“www 到非 www”的完美、非硬編碼 301 重定向,完全相反的情況會是什麼樣子?
編輯:
根據 Prix 的文章,我已將
.htaccess
文件更改為以下內容:Options +FollowSymLinks <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] </IfModule>
如前所述,
http://www./
不幸的是,這重定向到。誰能幫忙?
Prix 幾乎擁有它。當您否定
RewriteCond
(with!
) 時,它不會擷取,所以%1
是空的。兩種可能的解決方案:假人
RewriteCond
:RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(.+)$ [NC] RewriteRule ^/(.*)$ http://www\.%1/$1 [R=301,L]
%{HTTP_HOST}
在RewriteRule
:RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC] RewriteRule ^/(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L]
總之,一個乾淨的、經過測試的程式碼版本:
這適用於(對我而言)將 www 重定向到非 www
重寫引擎開啟 RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 重寫規則 ^(.*)$ http://%1/$1 [R=301,L]
這些工作中的任何一項(對我來說)都可以將非 www 重定向到 www
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC] 重寫規則 ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L]
或者
RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(.+)$ [NC] 重寫規則 ^(.*)$ http://www\.%1/$1 [R=301,L]