按照惯例,我为生产服务器部署执行了 301 重定向,非 www -> www。但我的开发服务器和生产服务器之间的 .htaccess 重写设置存在一些令人烦恼的问题/差异。
如果我在 .htaccess 文件(与网站一起部署)中保留非 www -> www 301 重定向条件,我的开发网络服务器将尝试重定向“http://localhost/我的网站“ 到 ”http://www.localhost/我的网站“但这并不起作用。
所以我必须根据服务器在 .htaccess 重写条件之间切换,这有点麻烦。
有没有办法使用条件语句来实现类似的目的......
# Rewrite "www.domain.com -> domain.com"
<IfModule mod_rewrite.c>
<If !localhost> #This is not valid code
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
<else>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{HTTP_HOST} (.+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
</If>
</IfModule>
或者有更聪明的方法来解决这个问题?
期待您的想法。非常感谢。Prembo。
答案1
看起来您的配置打算www
从localhost
请求中删除,如果我理解得没错的话?那部分应该不是必需的,所以如果我遗漏了什么,请告诉我。
那么像这样的事情怎么样:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^localhost$ [NC]
RewriteCond %{HTTP_HOST} !^www\..*$ [NC]
RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]