.htaccess多重写条件 - 在第二个条件下使用第一个条件匹配的部分

时间:2015-01-07 08:29:47

标签: .htaccess rewrite conditional-statements

我可以在第二种情况下使用第一个条件匹配的项目。

前 - :

RewriteCond %{HTTP_HOST} ^(.*).example.com$
RewriteCond %{REQUEST_URI} != (First condition matched item)

更新 -

我的示例htaccess文件

RewriteEngine On
RewriteBase /assets
RewriteCond %{HTTP_HOST} ^(.*).dam.nissanka.com$
RewriteRule ^(.*)$ /assets/%1/dam/collection/a.txt? [L,R=301]

url trying - www.dam.nissanka.com/assets/dam/collection/a.txt

这会以递归方式重定向到www.dam.nissanka.com/www/assets/dam/collection/a.txt。我需要停止递归

1 个答案:

答案 0 :(得分:1)

您可以将两个条件合并为一个,并使用对先前捕获的组的反向引用,如下所示:

RewriteCond %{HTTP_HOST}:%{REQUEST_URI} ^([^.]+)\.[^:]+:(?!/\1/).*$

您的.htaccess可以是这样的:

RewriteEngine On
RewriteBase /assets/

RewriteCond %{HTTP_HOST}:%{REQUEST_URI} ^([^.]+)\.[^:]+:/assets/(?!\1/).*$
RewriteRule ^(.*)$ %1/dam/collection/a.txt? [L,R=302]