.htaccess 所有规则的一个Httpacees RewriteCond

kxe2p93d  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(75)

我想为所有RewriteRules编写一个Httpacees RewriteCond
这是可能
我不想为每个规则重复重写条件

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\.domain\.com$ [NC]
RewriteRule ^$ /index.php?sub_domain=%1  [L,QSA]

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\.domain\.com$ [NC]
RewriteRule ^login$ /login.php?sub_domain=%1  [L,QSA]


RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\.domain\.com$ [NC]
RewriteRule ^signup$ /signup.php?sub_domain=%1  [L,QSA]
mitkmikd

mitkmikd1#

你可以只检查一次condition,然后用捕获组%1设置一个环境变量,然后在规则中使用env变量,如下所示:

RewriteCond %{HTTP_HOST} !^www\.[NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\. [NC]
RewriteRule ^ - [E=DN:%1]

# rewrite login or signup
RewriteRule ^(login|signup)/?$ $1.php?sub_domain=%{ENV:DN} [L,QSA,NC]

# rewrite landing page
RewriteRule ^/?$ index.php?sub_domain=%{ENV:DN} [L,QSA,NC]

相关问题