【问题标题】:Multiple dynamic mod_rewrite in htaccesshtaccess 中的多个动态 mod_rewrite
【发布时间】:2012-05-17 11:55:18
【问题描述】:

我有一堆目前都是这样的页面:site.com/browse.php?cat=XXX 和一堆 index.php?p=QQQ

我怎样才能使这个 site.com/XXX 和 site.com/QQQ 在 2 规则?我如何制定重写规则,以识别是否应将某些页面重定向到浏览而将某些页面重定向到索引?

我已经尝试过使用多个规则,但它总是只使用第一个规则(例如,尝试重定向到 browse.php?cat=QQQ)。

谢谢

【问题讨论】:

  • 是 XXX 和 QQQ 值以某种方式可区分 - 例如,一个总是包含字母值而另一个不包含。如果它们无论如何都重叠,那么我认为你不走运。
  • 所以基本上如果我将其更改为:site.com/QQQ(我不想将其更改为 site.com/index/QQQ)site.com/browse/XXX 它会是可能的?因为我试过这个然后去 site.com/browse/XXX 会尝试将它重定向到 site.com/index.php?p=browse/XXX 而不是 browse.php?cat=XXX
  • 我会这样:将 site.com/QQQ 重定向到 site.com/index.php?p=QQQ 和 site.com/browse/XXX 到 site.com/browse.php?cat =XXX 并为这些重写制定适当的规则......而 site.com/browse/XXX 必须是第一条规则,site.com/QQQ 必须是第二条。带 [L] 开关。

标签: php .htaccess url mod-rewrite


【解决方案1】:

您需要某种方法来区分 index.php 和 browse.php。这是一个建议:

 site.com/QQQ
 site.com/browse/XXX

匹配并处理上述网址的重定向规则有:

RewriteEngine On
# The following two lines prevent further rewriting on second pass
RewriteRule ^browse\.php$ - [L]
RewriteRule ^index\.php$ - [L]
# The following two lines cause mod_rewrite to do another pass
RewriteRule ^browse/(.+) browse.php?cat=$1 [L]
RewriteRule ^(.+) index.php?p=$1 [L]

【讨论】:

  • 是否有可能拥有:site.com/QQQ 和 site.com/browse/XXX? mod_rewrite 代码会是什么,因为我已经尝试过了,但无法让它工作!
  • 如果我想添加更多规则,例如对于profile.php,我是否只需以与浏览规则类似的方式编写脚本并将其放在索引规则之前?
  • 是的,我相信它会起作用。请记住,(i)您需要在两个部分中克隆浏览规则(ii)索引规则必须在两个部分中都位于最后。
  • 很抱歉要求如此严格,但您能否举一个多条重写规则的示例?还有一个具有多个变量的(例如浏览/QQQ/PPP/WWW)。谢谢(这里无法私信...)非常感谢!
猜你喜欢
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
相关资源
最近更新 更多