我尝试根据虚拟文件夹的数量进行重写,并使用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 )
答案 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
网址。
最好不要捕捉目标中不需要的值。