0

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

我想重定向以下内容:

  1. service.abc.info 到 www.abc.de
  2. service.abc.info/feedback/abc/ 到 feedback.abc.info/abc/
  3. service.abc.info/feedback/def/ 到 feedback.abc.info/def/

对于 2. 和 3. 我还需要重定向完整的请求 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]
4

1 回答 1

2

%{HTTP_HOST}变量包含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]
于 2013-08-21T09:04:23.783 回答