此重写规则适用于domain.com/news,但我希望能够将多个级别解析为变量,例如domain.com/news/2012/party/zeke等
我尝试使用正则表达式但是失败了。
RewriteEngine on
RewriteBase /
RewriteRule ^([^/\.]+)/?$ page.php?page=$1 [L]
此处还尝试了解决方案: mod_rewrite with multiple variables
using mod_rewrite to simulate multiple sub-directories
//编辑:似乎我可以在每个级别添加一个规则,但是有可能有一个规则可以执行所有级别吗?
RewriteRule ^([^/\.]+)/?$ /page.php?page=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /page.php?page=$1&sub=$2 [L]
答案 0 :(得分:1)
您可以使用递归规则,但重写的所有部分都是数据。那么如何将它转换为查询字符串,因为它不知道如何命名变量。
如果您有/section/news/year/2012/user/zeke/
,那么您可以使用(未经过测试): -
RewriteRule ^section/\w+/([^/]+)/([^/]+)/(.*)$ news/$3?$1=$2 [NC,N,QSA]
RewriteRule ^section/(\w+)/?$ page.php?page=$1 [NC,QSA,L]
这应该最终重写为`page.php?page = news& year = 2012& user = zeke
根据您的目标,您将不得不更改您的要求并使用上述版本或将它们全部传递到PHP中的页面并以PHP进行工作。