为什么这个重写规则不起作用?
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>
答案 0 :(得分:1)
HTTP_HOST
没有任何路径信息,只有 “domain.se”。路径信息必须在规则的正则表达式匹配中:
RewriteCond %{HTTP_HOST} domain.(se|dk)$ [NC]
RewriteRule ^shop$ https://domain.%1/ [R=302,L,NE]
此外,您需要使用%1
反向引用,该引用引用条件中的分组。 $1
反向引用是规则分组中的一个(没有一个)。