我目前正在尝试建立我的个人网页。
我正在使用 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
当我将设置从 ?p=1(丑陋链接)更改为 prettylinks 时,#Wordpress 部分会自动创建。我尝试了这里找到的所有建议的解决方案,并重新启动了 apache2,但都没有用。
答案1
问题 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 注册。在他们的门户网站上,您需要添加一条 A 记录
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]
答案2
答案就在 DNS 中。您的域名注册商 register.com 应该会提供一个选项来管理您的 DNS 条目。在控制面板的该部分中,可能会有一个选项来包含 www. 子域。
如果没有,您可以自行创建它,方法是将其添加为指向主机根文件夹的子域。
答案3
<If "%{HTTP_HOST} != 'www.example.com'">
Redirect / http://www.example.com/
</If>
就像这里在规范主机名下解释的那样 Apache 文档重新映射/重写