【问题标题】:htaccess-rewrite-rule for more than one parameterhtaccess-rewrite-rule 用于多个参数
【发布时间】:2013-05-25 19:55:44
【问题描述】:

我使用以下规则

RewriteRule ^([\w]+)/?([\w]+)? index.php?action=$1

重写

www.mysite.com/123

www.mysite.com/index.php?action=123

这需要保持这样,但有些情况我也需要重写

www.mysite.com/123/abc

www.mysite.com/index.php?action=123&example=abc

我怎样才能做到这一点?谢谢!

【问题讨论】:

    标签: .htaccess parameters rewrite rule


    【解决方案1】:

    通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_ROOT目录下:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^([^/]+)/([^/]+)/?$ index.php?action=$1&example=$2 [L,QSA]
    
    RewriteRule ^([^/]+)/?$ index.php?action=$1 [L,QSA]
    

    【讨论】:

    • 这似乎行得通,谢谢,但您能解释一下为什么您将我的行改为您的新行(您帖子中的最后一行)吗?
    • 当然,只要我靠近我的电脑,我就会在我的答案中添加一些解释。另外,如果有效,您可以将其标记为已接受。
    • 刚回来。您的规则有 2 个问题:1. 不使用 L 标志(标记规则结束)和 2. 将 2 条规则合并为 1 条不是一个好主意,否则您有时可能会将 example 参数设为 null。
    • 现在运行完美,谢谢!我的“问题”与您的规则没有直接关系,但我的 CSS、JS 和 IMG 链接都是相对的,因为在更改之前我只有一个“子目录”(htaccess-rule 将其转换为参数);)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2021-02-03
    • 2020-04-03
    • 2011-07-19
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多