【问题标题】:Creating rewrite rules for multiple urls in the same folder为同一文件夹中的多个 url 创建重写规则
【发布时间】:2011-01-28 01:22:43
【问题描述】:

我们的客户要求我将我们创建的网站转换为 SEO 友好的 url 格式。我已经设法解决了这个问题,但是遇到了在同一个文件夹中拥有相同网址的问题。

我正在尝试重写以下网址,

  1. /review/index.php?cid=intercasino
  2. /review/submit.php?cid=intercasino
  3. /review/index.php?cid=intercasino&page=2#reviews

我想让他们去,

  1. /review/intercasino
  2. /submit-review/intercasino
  3. /review/intercasino/2#reviews

我几乎可以使用以下规则使其正常工作,

RewriteRule (submit-review)/(.*)$ review/submit.php?cid=$2 [L]
RewriteRule (^review)/(.*) review/index.php?cid=$2

您可能已经看到,问题是 /submit-review 重写为 /review,而 /review 又被重写为 index.php,因此我的评论提交页面丢失了我的索引页面。我认为放置 [L] 会阻止调用第二条规则,但它似乎在两个单独的通道中重写了两个 url。我也试过 [QSE] 和 [S=1]

我宁愿不必将我的文件移动到不同的文件夹来进行重写,因为这似乎太糟糕了。如果有人能给我一些关于如何区分这些相似网址的指示,那就太好了!

谢谢 (参考:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    我会做的,是将 /submit-review/ 直接发布到自身(或 php 文件),然后从 PHP 文件中提交重定向。

    在重定向等时强制 htaccess 维护帖子值可能很困难

    【讨论】:

    • 我并不是真的在寻找重定向。只是为了重写网址。
    【解决方案2】:

    我的朋友找到了解决这个问题的方法。

    RewriteRule review/submit.php - [L]
    

    将捕获第一次重写,然后阻止下一次重写,工作得很好!

    【讨论】:

    • 我的完整规则集,最后看起来像这样。 RewriteRule review/submit.php - [L] RewriteRule ^(submit-review)/(.*)$ review/submit.php?cid=$2 [L] RewriteRule ^(?:review)/([a-z0-9 ]*)(/([1-9])(#[az]*)?)?$ review/index.php?cid=$1&page=$3
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2017-07-16
    • 2016-03-30
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2015-09-14
    相关资源
    最近更新 更多