用完整的URL重写子域名

时间:2013-08-21 08:46:01

标签: .htaccess mod-rewrite rewrite subdomain

我想在一个htaccess文件中重定向3个不同的网址。但目前它还没有工作,只有第一条规则总是被触发。

我想重定向以下内容:

  1. service.abc.info to www.abc.de
  2. service.abc.info/feedback/abc/ to feedback.abc.info/abc /
  3. service.abc.info/feedback/def/ to feedback.abc.info/def /
  4. 对于2.和3.我还需要重定向完整的Request URI。

    这是我的.htaccess文件:

    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^service\.abc\.info$ [NC]
    RewriteRule .* http://www.abc.de [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^service\.abc\.info/feedback/abc/$ [NC]
    RewriteRule .* http://feedback.abc.info/abc/{REQUEST_URI} [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^service\.abc\.info/feedback/def/$ [NC]
    RewriteRule .* http://feedback.abc.info/def/{REQUEST_URI} [R=301,L]
    

1 个答案:

答案 0 :(得分:2)

%{HTTP_HOST}变量包含主机:请求标头的内容,该标头只包含主机名。没有URI路径。此外,您需要匹配重写规则模式中的路径,因为第一个规则是其他两个规则的超集,您需要将其移动到最后。

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^service\.abc\.info$ [NC]
RewriteRule ^/?feedback/abc/(.*)$ http://feedback.abc.info/abc/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^service\.abc\.info$ [NC]
RewriteRule ^/?feedback/def/(.*)$ http://feedback.abc.info/def/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^service\.abc\.info$ [NC]
RewriteRule ^(.*)$ http://www.abc.de/$1 [R=301,L]