Unsplash+
以搜尋引擎來看網址,有帶 www 和不帶 www 的網址是不同的兩個 URL,當它們指向同一個網站時,會讓搜尋引擎不知應該選擇哪一個 URL 作為主要的網址。
若 WordPress 網站可以進入管理後台,在 WordPress Address (URL) 和 Site Address (URL) 打入網址,決定要不要帶 www 網址。
內容目錄:
- Nginx 301 重定向
- HTTP 301 redirect HTTPS
- 301 重定向新網址
- Nginx
- .htaccess on Apache
- Kinsta 控制台
- Apache 系統
我剛好代管一個 Joomla 網站,後台就沒有設置的選項,就需要從主機採用 301 重定向 (redirect) 進行 URL 標準化設置。
Nginx 301 重定向
先在 DNS 設置好域名的 A 紀錄及 CNAME,我要定義域名原本是 example.com 重定向為 www.example.com 網址,然後在 nginx/sites-available/example.conf 文件配置如下:
server {
listen 80;
server_name www.example.com;
root /var/www/example.com;
}
在配置文件的最下面添加以下配置
server {
listen 80;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
還有一種配置方法:
server
{
listen 80;
server_name www.example.com example.com;
if ($host != 'www.example.com' ) {
rewrite ^/(.*)$ http://www.example.com/$1 permanent;
}
........
HTTP 301 redirect HTTPS
另外補上其他重定向的配置,http 301 重定向到 https 配置:
域名加上 SSL 證書後,nginx.conf 一定不要忘記加上這個 301 redirect 配置。
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
return 301 https://www.example.com$request_uri;
}
301 重定向新網址
oldexample.com 301 重定向新網址 newexample.com
Nginx
server {
server_name example.com www.example.com;
return 301 $scheme://newdomain.com$request_uri;
}
最後不要忘記重啟 Nginx
nginx -t && service nginx restart
.htaccess on Apache
#Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) https://newdomain.com/$1 [R=301,L]
Kinsta 控制台
先在 MyKinsta 控制台安裝免費的 Let’s Encrypt 證書,然後利用 redirect tool 來做重定向。
olddomain.com - ^(.*)$ - https://newdomain.com$1
2017/09/12 補充:
接手一個 WordPress 已經建置好了搬遷主機的案子,一般正常的 WordPress 後台就可以設定域名要不要有 www,但是很多外掛因素會造成域名轉向 (redirect) 的問題。
所以只能從主機端來執行,將配置寫入 etc / nginx / sites-available / domain.com
例如:不帶 www 域名 301 轉址 (redirect) 到有 www 的域名
root /var/www/domain.com/htdocs;
if ($host != www.domain.com) { return 301 $scheme://www.domain.com$request_uri; }
例如:有帶 www 域名 301 轉址 (redirect) 到沒有 www 的域名
root /var/www/domain.com/htdocs;
if ($host != domain.com) { return 301 $scheme://domain.com$request_uri; }
Nginx 重啟後,域名有沒有 www 就會由主機端的配置來控制了。
Apache 系統
www URL 重定向到非 no-www
可以通過修改網站的 .htaccess 文件將 www.yourdomain.com 域名的所有請求重定向到 yourdomain.com。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]
另一個是非 no-www URL 重定向到 www
可以通過修改網站的 .htaccess 文件將 yourdomain.com 域名的所有請求重定向到 www.yourdomain.com。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
參考文件:
Nginx 官方 Rewrite 文檔:
發佈留言