2015-12-03 91 views
1

我正在爲apache 2.4正則表達式工作,我正在嘗試做的工作是我有一個HTTP_HOST和REQUEST_URI,我試圖重寫,因爲我期望。apache的正則表達式的問題排除某些東西

RewriteCond %{HTTP_HOST} ^(.+).(?:dev|staging|prod).(?:domain1|domain2).com$ 
RewriteCond %1##%{REQUEST_URI} (.+)##\/([^\/]+) 
RewriteCond -f "/upload/%1/assets/%2/%2.html" 
RewriteRule ([^\/]+) "/upload/%1/assets/$1/$1.html" [R] 

我能夠匹配我期望的項目。因此,如果我向Subdomain.dev.domain1.com/verntest發出請求,它會成功重寫,但它也會嘗試重寫改寫的元素。

所以。 /upload/subdomain/assets/verntest/verntest.html作品 然後 它被改寫爲/upload/subdomain/assets/upload/upload.html

我想獲得這個所以它不會第二次匹配。

回答

0

請務必使用正則表達式錨來限制你的模式:

RewriteCond %{HTTP_HOST} ^(.+).(?:dev|staging|prod).(?:domain1|domain2).com$ 
RewriteCond %1##%{REQUEST_URI} (.+)##/([^/]+) 
RewriteCond -f /upload/%1/assets/%2/%2.html 
RewriteRule ^([^/]+)/?$ /upload/%1/assets/$1/$1.html [L,R] 

此模式將匹配/verntest但不/upload/subdomain/assets/verntest/verntest.html