代码之家  ›  专栏  ›  技术社区  ›  camomileCase

使用mod_rewrite to 301 to SERVER_NAME

  •  2
  • camomileCase  · 技术社区  · 14 年前

    我的Apache vhost中有许多服务器别名,我希望所有不是服务器名的域都与服务器名对应301。

    RewriteCond %{HTTP_HOST} !%{SERVER_NAME} [NC]
    RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,QSA,L]
    

    这确实有效:

    RewriteCond %{HTTP_HOST} !www.some-domain.com [NC]
    RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,QSA,L]
    

    我可以不硬编码域名吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Gumbo    14 年前

    环境变量仅在 RewriteCond . 但您可以使用这样的回溯引用:

    RewriteCond %{HTTP_HOST}/%{SERVER_NAME} !^([^/]+)/\1$
    
        2
  •  0
  •   helmor    12 年前

    域名是RewriteCond的CondPattern的一部分。

    CondPattern在httpd启动时呈现,因此它不能包含任何动态服务器变量。。

    所以这不起作用。。