如何使用 Apache2 將我的網站從非 www 重定向到 WWW?
我目前正在嘗試設置我的個人網頁。
我正在使用 VPS 並手動安裝了 Wordpress,一切似乎都正常工作……除非我訪問我網站的非 www 版本,它會出現一個找不到頁面。
www.andrewrockefeller.com <–有效
andrewrockefeller.com <– 沒有(我想將其重定向到 www.andrewrockefeller.com)
我已經嘗試將 RewriteEngine 功能添加到我的 .htaccess 中,但這不起作用。
我還嘗試將“投票最多”的方法添加到我的預設文件中(apache2.conf 從中提取:
<VirtualHost *> ServerName andrewrockefeller.com Redirect 301 / http://www.andrewrockefeller.com/ </VirtualHost>
看到有多少人能夠使上述工作正常進行,我可能還缺少其他東西來使其發揮作用嗎?
感謝您的時間!
編輯:我的 .htaccess 文件如下:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
#Wordpress 部分是在我將設置從 ?p=1(醜陋的連結)更改為 prettylinks 時自動創建的。我在這裡找到的任何建議的解決方案我都嘗試過並重新啟動了 apache2,但它沒有奏效。
問題 1:不正確的 DNS
您沒有 www.andrewrockefeller.com 的 A 或 CNAME 記錄。因此,瀏覽器無法將您的域名轉換為 IP 地址。
dig andrewrockefeller.com ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.2 <<>> andrewrockefeller.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31887 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;andrewrockefeller.com. IN A ;; AUTHORITY SECTION: andrewrockefeller.com. 1739 IN SOA dns226.a.register.com. root.register.com. 2013082003 28800 7200 604800 14400 ;; Query time: 22 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Oct 31 12:44:47 2013 ;; MSG SIZE rcvd: 98
看來您的域已在 Register.com 註冊。在他們的門戶網站上,您需要為
andrewrockefeller.com -> 76.164.206.80
添加此 A 記錄後,您的 domain.com 版本應該會解析。
問題 2:規範域名
我認為 Wordpress 會正確重定向域,但為了確保這一點,你最好強制任何與你想要的東西不匹配的東西。
參考:http ://wiki.apache.org/httpd/CanonicalHostNames
我更喜歡使用 mod_rewrite 和這種方法:
# And for a site running on port 80 RewriteCond %{HTTP_HOST} !^example\.com [NC] RewriteCond %{HTTP_HOST} !="" RewriteRule ^/?(.*) http://example.com/$1 [L,R=301]
這基本上說如果域不匹配 example.com 重定向到 example.com。如果您想在 www.example.com 上進行標準化,您可以相應地修改:
# And for a site running on port 80 RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteCond %{HTTP_HOST} !="" RewriteRule ^/?(.*) http://www\.example.com/$1 [L,R=301]