apache重定向无效
这个问题让我纠结了蛮久啊,因为之前一直不注意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 server
ServerAlias slnis.com www.xxx.com
DocumentRoot /home/www/virtual/xxx.com/htdocs
ServerAdmin xxx@xxx.com
<Directory /home/www/virtual/xxx.com/htdocs>
Options FollowSymLinks IncludesNOEXEC
DirectoryIndex index.html index.php
AllowOverride all
Order Deny,Allow
Allow 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 On
rewriteCond %{HTTP_HOST} ^xxx.com [NC]
rewriteRule ^(.*)$ http://www.xxx.com/$1 [R=301,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
上面是我的设置,在wordpress上面新增重定向代码,把xxx.com重定向到www.xxx.com