根据服务器(本地主机与生产)进行有条件的 301 重定向

根据服务器(本地主机与生产)进行有条件的 301 重定向

按照惯例,我为生产服务器部署执行了 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

看起来您的配置打算wwwlocalhost请求中删除,如果我理解得没错的话?那部分应该不是必需的,所以如果我遗漏了什么,请告诉我。

那么像这样的事情怎么样:

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]

相关内容