2015-12-03 58 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

相关问题