使用 $1、%1、%2 等动态重写

使用 $1、%1、%2 等动态重写

如何使用 $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]

相关内容