mod-rewrite Regex RewriteRule取决于虚拟文件夹的数量

时间:2015-09-06 10:11:40

标签: regex apache .htaccess mod-rewrite

我尝试根据虚拟文件夹的数量进行重写,并使用foldernames作为变量。

所以使用

RewriteBase /foo/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/(.*).html$ date.php?country=$1&city=$2&date=$3 [NC]

example.com/usa/chicago/09072015/dates-to-party.html

给了我想要的东西。

但我不能让它为

工作
RewriteBase /foo/
RewriteRule ^([^/]+)/([^/]+)/(.*).html$ city.php?country=$1&city=$2 [NC]

example.com/usa/chicago/locations-to-party.html

如果有两个虚拟文件夹(/usa/chicgao/09072015/.index.html),我想重写为city.php,如果有三个虚拟文件夹,我想重写为date.php(/usa/chicgao/09072015/index.html )

1 个答案:

答案 0 :(得分:0)

您需要调整正则表达式,并且必须避免使用.*

RewriteBase /foo/

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/[^./]+\.html$ date.php?country=$1&city=$2&date=$3 [NC,L,QSA]

RewriteRule ^([^/]+)/([^/]+)/[^./]+\.html$ city.php?country=$1&city=$2 [NC,L,QSA]

[^./]+将匹配任何不是DOT或斜杠的内容,因此会避免匹配的date网址。

最好不要捕捉目标中不需要的值。