【问题标题】:2 url rewrite rule for 1 dynamic page1 个动态页面的 2 个 url 重写规则
【发布时间】:2011-01-29 10:02:57
【问题描述】:

我有一个名为 show.php 的动态页面。页面是动态的,url 可以是show.php?name=john-doeshow.php?category=student

我正在尝试创建一个重写规则,将 URL 转换为名称的 /show/john-doe.html 或类别的 /show/student.html

这是我目前在 .htaccess 中的内容。

RewriteRule ^show/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/([^/]*)\.html$ show.php?category=$1 [L]

目前,只有名称规则有效,类别规则无效。怎么了?

【问题讨论】:

  • 确切的规则是什么 - 如果名称中有连字符,那就是名称?

标签: apache mod-rewrite dynamic-url


【解决方案1】:

问题是您将所有 show/xxx.html 发送到同一个 URL(第一个)。由于两个重写规则都使用完全相同的参数,所以只有第一个可以工作。

你可以用两种不同的方式解决这个问题。

您可以使用 show.php?id=xxx 并接受 PHP 中的名称和类别,然后确定要显示的页面。

或者您在重写时使用两种不同类型的 url 来获得 show/category/student.html 和 show/student/john-doe.html,如下所示:

RewriteRule ^show/student/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/category/([^/]*)\.html$ show.php?category=$1 [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2014-02-02
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2018-06-07
    相关资源
    最近更新 更多