【发布时间】:2011-08-12 00:09:44
【问题描述】:
我正在尝试创建一个 mod_rewrite,当用户输入或显示在 URL 中时:
www.example.com/var1/var2/var3/var4/
它的输出与
相同www.example.com?page=var1&cat=var2&subcat=var3&subsubcat=var4
但如果数字变量发生变化,它仍然会起作用,因此变量可能是:
www.example.com/var1/
or
www.example.com/var1/var2/
or
www.example.com/var1/var2/var3/
or
www.example.com/var1/var2/var3/var4/
如果我使用以下内容,它仅适用于 www.example.com/var1/var2/var3/var4/ 而不适用于其他:
Options +FollowSymLinks RewriteEngine On RewriteBase /
RewriteRule ^([^&]+)/([^&]*)/([^&]*)/([^&]*)/$ /?page=$1&cat=$2&subcat=$3&subsubcat=$4 [L]
如果我使用 CHAINING 使用以下代码,它在一定程度上可以作为一个链,但问题是对于
www.example.com/var1/var2/
www.example.com/var1/var2/var3/
www.example.com/var1/var2/var3/var4/
它将 VAR1 输出为“/”,因此它使用以下代码忽略第一个变量:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^([^&]+)/$ /?page=$1 [C]
RewriteRule ^([^&]+)/([^&]*)/$ /?page=$1&cat=$2 [C]
RewriteRule ^([^&]+)/([^&]*)/([^&]*)/$ /?page=$1&cat=$2&subcat=$3 [C]
RewriteRule ^([^&]+)/([^&]*)/([^&]*)/([^&]*)/$ /?page=$1&cat=$2&subcat=$3&subsubcat=$4 [L]
顺序总是相同的,所以这应该很容易。请问我怎样才能完成这项工作?
【问题讨论】:
标签: regex apache .htaccess mod-rewrite clean-urls