Apache mod_rewrite(RewriteCond)过滤掉" in-between"字?

时间:2014-10-13 07:22:49

标签: regex apache .htaccess mod-rewrite rewrite

(我不习惯RewriteCond事。所以我只是用Google搜索并用于现有的事情。)

现在我有一段.htaccess代码,在输入时会重写为不同的网址:

RewriteCond %{HTTP_HOST} ^(.*).example.com$
RewriteRule ^(.*)$ http://www.example.com/%1/$1 [P,L,NS]

通过使用它,它将通过获取“子域”输入,然后作为文件夹,如输出重写。让我们说:

这样才有用。
现在我需要的是现有的一个更复杂。


如何按RewriteCond过滤“介于两者之间”的字词?

让我们说我有两个级别的子域名。然后我只想选择/过滤上一个。这意味着:

(输入也可以是:dev.memberdev.pricing等等。

如何根据support字符串过滤dev.support字词?
当前^(.*).example.com$仅适用于最左侧的项目。

下面一个不起作用:

RewriteCond %{HTTP_HOST} dev.^(.*).example.com$
RewriteRule ^(.*)$ http://dev.example.com/%1/$1 [P,L,NS]

请建议。

1 个答案:

答案 0 :(得分:0)

在您的正则表达式^中需要放置在模式的开头,使用[^.]+.*更好的模式

您可以使用:

RewriteCond %{HTTP_HOST} ^dev\.([^.]+)\.example\.com$
RewriteRule ^(.*)$ http://dev.example.com/%1/$1 [P,L,NS]