【问题标题】:Quick ModRewrite and GET question快速 ModRewrite 和 GET 问题
【发布时间】:2011-05-07 04:45:24
【问题描述】:

如果设置了 $_GET['success'],我会尝试返回成功通知。如果我这样输入它就可以正常工作:mail?inbox&success

但如果我这样输入它,我会尝试让它工作:mail/inbox/success 或 mail/inbox&success

我对 mod_rewrite 不是很有经验,我还没有找到解决方案,所以我在这里问。我如何让它与上面的例子一起工作?这就是 .htaccess 现在的样子:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^user/([^/]*)$ /userinfo?name=$1 [L]
RewriteRule ^items/([^/]*)$ /items?weapon=$1 [L]
RewriteRule ^mail/inbox /mail?inbox [L]
RewriteRule mail/(.*)/(.*)$ /mail?read=$2

【问题讨论】:

    标签: php apache .htaccess mod-rewrite get


    【解决方案1】:

    你可以改变

    RewriteRule ^mail/inbox/ /mail?inbox [L]
    

    RewriteRule ^mail/inbox/(.*) /mail?inbox&$1 [L]
    

    取决于您要重写的其他组合。 添加行

    RewriteRule ^mail/inbox/success /mail?inbox&success [L]
    

    在第一条规则之前也应该这样做,但仅限于这种情况,可能会影响其他规则。

    【讨论】:

    • 转到 /mail?inbox。我希望它是 /mail/inbox/
    • 它匹配 /mail/inbox/success 并按照您的要求将其作为 /mail?inbox&success 传递
    • 没关系,如果我添加另一个斜杠它可以工作,但如果我输入 /mail/inbox/success 它不会做任何事情。它应该如何使用?
    • 如果之前有另一个匹配规则带有 [L],则此规则为最后一个,其余的将被跳过。也许这就是问题所在......
    • 让它与“RewriteRule ^mail/inbox/success /mail?inbox&success [L]”一起使用谢谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多