【问题标题】:Getting x number of variables in mod_rewrite from "directories"从“目录”获取 mod_rewrite 中的 x 个变量
【发布时间】:2012-04-01 20:26:52
【问题描述】:

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

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    你可以有递归规则,但是你重写的所有部分都是数据。那么如何将其转换为查询字符串,因为它不知道如何命名变量。

    如果您有 /section/news/year/2012/user/zeke/,那么您可以使用 (NOT TESTED):-

    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 中完成工作。

    【讨论】:

    • 谢谢!我正在升级我的 cms,这将是一个很大的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2012-03-05
    相关资源
    最近更新 更多