我刚刚购买了域名vas.im ,为vas.im和www.vas.im添加了DNS规则,然后我试图让apache2将后者redirect到前者。 我启用了mod_rewrite,追加了/etc/apache2/httpd.conf ,并重新启动了apache2服务。
ServerName localhost AccessFileName .htaccess # Redirect www to non-www RewriteEngine On RewriteEngine On RewriteCond %{HTTP_HOST} ^[url]www.vas.im[/url] [NC] RewriteRule ^(.*)$ [vas.im...] [L,R=301]
我一定犯了一些错误,因为www域不redirect。 我不假装我理解mod_rewrite,所以我想知道是否有人知道这个问题是什么。
我build议你这样做:
<VirtualHost *:80> ServerName www.vas.im #ServerAlias vas.net #add aliases if any RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.vas\.im$ [NC] RewriteRule ^ http://vas.im/%{REQUEST_URI}%{QUERY_STRING} [L,QSA,R=301] </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /path/to/documentroot ServerName vas.im ErrorLog logs/your_log_file_name CustomLog logs/your_log_file_name common </VirtualHost>
或者,您可以将第一个虚拟主机块更改为:对于此方法,您必须使用mod_alias's Redirect 。 所以,确保你已经在你的.conf文件中加载了mod_alias模块。
<VirtualHost *:80> ServerName www.vas.im #ServerAlias vas.net #add aliases if any RedirectMatch 301 /(.*) http://vas.im/$1 </VirtualHost>