如何使用 $1、%1、%2 等进行更复杂和动态的重写。
我正在尝试进行更动态的重写(有很多域指向同一个服务器/站点)
# put 'www' as subdomain if none is given
RewriteCond %{HTTP_HOST} ^([^\.]+\.[^\.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
# rewrite subdomains
RewriteCond %{HTTP_HOST} ^(admin|files|imap|mysql)\.[^\.]+\.[^\.]+$ [NC]
RewriteCond %{REQUEST_URI} !^/_(admin|files|imap|mysql)/ [NC]
RewriteRule ^(.*)$ /_%1/$1 [L]
# redirect to subdomain
RewriteCond %{HTTP_HOST} ^www\.([^\.]+\.[^\.]+)$ [NC]
RewriteCond %{REQUEST_URI} ^/_([^/]*)/ [NC]
RewriteRule ^(.*)$ http://%1.domain.com/ [L,R=301]
# rewrite 'secure' subdomain
RewriteCond %{HTTP_HOST} ^(demo|secure)\.[^\.]+\.[^\.]+$ [NC]
RewriteCond %{REQUEST_URI} !^/_secure/ [NC]
RewriteRule ^(.*)$ /_secure/$1 [L]
但现在我面临一个问题......
但#redirect to subdomain
我无法弄清楚如何像我所做的其他事情一样解决条件和规则。我需要以某种方式从第一个条件中提取域,然后在 %1 的规则中使用它,但是当你在中间有另一个条件时你该怎么做呢?
答案1
等的捕获数据%1
是从RewriteCond
正上方使用的RewriteRule
。
您的 URI 路径评估/捕获不能直接在 中进行,有什么原因吗RewriteRule
?类似这样的事情(我认为这就是您想要的?):
RewriteCond %{HTTP_HOST} ^www\.([^\.]+\.[^\.]+)$ [NC]
RewriteRule ^/_([^/]*)/$ http://$1.%1/ [L,R=301]