【问题标题】:Htaccess Rewrite second rule not workingHtaccess重写第二条规则不起作用
【发布时间】:2011-08-15 20:46:11
【问题描述】:

我想将 index.php?c=4index.php?g=23 等网址重写为 website.com/games/categoryname/身份证/ 游戏页面 website.com/play/gamename/id/

也是如此

我的 htaccess 文件如下所示:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9\-_%]+)/([a-zA-Z0-9\-_%]+)/([0-9]+)/$ index.php?c=$3
RewriteRule ^([a-zA-Z0-9\-_%]+)/([a-zA-Z0-9\-_%]+)/([0-9]+)/$ index.php?g=$3

问题是只有第一个重写规则有效,如果我评论它,那么第二个也可以工作,但永远不会两个:(。我正在 MAMP 上测试这个

你能帮帮我吗?

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    它们不能同时工作,因为它们具有相同的条件 - 您设置了具有相同条件的两个不同操作,并且只执行第一个操作。

    啊,我明白你想要达到的目的:

    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^(games)/([a-zA-Z0-9\-_%]+)/([0-9]+)/$ index.php?c=$3 [L]
    RewriteRule ^(play)/([a-zA-Z0-9\-_%]+)/([0-9]+)/$ index.php?g=$3 [L]
    

    【讨论】:

      【解决方案2】:

      你必须这样做:

      Options +FollowSymlinks
      RewriteEngine on
      RewriteRule ^play/([a-zA-Z0-9\-_%]+)/([0-9]+)/$ index.php?c=$2
      RewriteRule ^games/([a-zA-Z0-9\-_%]+)/([0-9]+)/$ index.php?g=$2
      

      【讨论】:

      • 最好在每个RewriteRule 之后放置一个[L](最后一个)
      • @Alexander Ivanov 我同意,这是一个很好的做法,尽管在这些之后您可能需要更多的重写规则,所以这取决于具体情况。
      • 如果他在RewriteRule ^(.+)$ index.php?user=$1之后放置一个规则来匹配例如用户名,那就太糟糕了 - 这会很糟糕......
      • 我想更多的是像RewriteRule (.*)/index.php $1/ 这样的东西,尽管有人可能会争辩说这应该放在其他规则之前。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多