从“目录”获取mod_rewrite中的x个变量

时间:2012-04-01 20:26:53

标签: .htaccess mod-rewrite

此重写规则适用于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]

1 个答案:

答案 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进行工作。