为什么这不起作用,htaccess,捕获域名ext并在cond中使用

时间:2015-03-24 01:09:50

标签: apache .htaccess rewrite

为什么这个重写规则不起作用?

RewriteCond %{HTTP_HOST} domain.(se|dk)/shop/$ [NC]
RewriteRule ^ https://domain.$1 [R=302,L,NE]

我试图捕获对domain.dk/shop/和domain.se/shop/的所有请求,并将它们重定向到domain.dk或domain.se。

似乎是什么问题?

整个htaccess

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# Redirect everything to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} domain.(se|dk)$ [NC]
RewriteRule ^shop$ https://domain.%1/ [R=302,L,NE]

</IfModule>

1 个答案:

答案 0 :(得分:1)

HTTP_HOST没有任何路径信息,只有 “domain.se”。路径信息必须在规则的正则表达式匹配中:

RewriteCond %{HTTP_HOST} domain.(se|dk)$ [NC]
RewriteRule ^shop$ https://domain.%1/ [R=302,L,NE]

此外,您需要使用%1反向引用,该引用引用条件中的分组。 $1反向引用是规则分组中的一个(没有一个)。