这个问题让我纠结了蛮久啊,因为之前一直不注意SEO,网站带www和不带www的一级域名都被收录了,而且不知道为什么不带www的一级域名被收录比www还多,这可不是我的初衷!这次吸取教训了,以后再开站不要放出一级域名的解析就是最直接有效的办法了!可是已经放出了怎么办?我们大可不必直接关掉一级域名的解析,如果这样做你的站可能会在搜索引擎消失一段时间!虽然过一段时间应该会好起来,可是我们有更好的解决办法!就是重定向url,我用的是apache,对这东西不是很熟,折腾了蛮久!首先我们说说.htaccess
Apache的rewrite规则里的.htaccess要想起作用,必须要注意的三个地方。
如果想启用rewrite重写规则的.htaccess 设置,需要在配置文件httpd.conf注意三个地方。
1、必须开启rewrite_module模块,重写规则才能起作用。
LoadModule rewrite_module modules/mod_rewrite.so把这段前面的分号去掉。2、必须允许AllowOverride为All。
AllowOverride All才可以让.htaccess配置能起作用。3、Options的设置里必须加上FollowSymLinks,这样.htaccess配置才能起作用。
即要设置成Options Indexes FollowSymLinks。这里给个虚拟机设置使用.htaccess
<VirtualHost *:80>
ServerName serverServerAlias slnis.com DocumentRoot /home/www/virtual/xxx.com/htdocsServerAdmin<Directory /home/www/virtual/xxx.com/htdocs>
Options FollowSymLinks IncludesNOEXECDirectoryIndex index.html index.phpAllowOverride allOrder Deny,AllowAllow from all</Directory>ErrorLog /home/www/virtual/xxx.com/logs/error_log
CustomLog /home/www/virtual/xxxcom/logs/access_log common</VirtualHost>然后可以在你的虚拟主机根目录下建一个.htaccess,在这个文件里写一重定向规则!
<IfModule mod_rewrite.c>
RewriteEngine OnrewriteCond %{HTTP_HOST} ^xxx.com [NC]rewriteRule ^(.*)$ [R=301,L]</IfModule># BEGIN WordPress
<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule># END WordPress
上面是我的设置,在wordpress上面新增重定向代码,把xxx.com重定向到