【问题标题】:HTACCESS | Adding a second rewrite rule?访问 |添加第二个重写规则?
【发布时间】:2013-05-15 02:28:28
【问题描述】:

我正在尝试编写我的 .htaccess 来支持两个虚 url,因为我不太擅长 .htaccess,所以代码会自己说话。

 RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?p=$1&s=$2 [L,QSA]

例如去http://website.com/home/test

我得到一个 404,但如果我只访问 website.com/home,$_GET["p"] 仍会返回首页。

为什么我在 url 中添加第二个变量时得到 404?

【问题讨论】:

  • 因为^([a-zA-Z0-9-]+)/?$ 匹配由字母数字字符后跟斜杠组成的url。
  • 我不擅长 htaccess。可以举个例子吗?

标签: php .htaccess url vanity-url


【解决方案1】:

您得到 404,因为 /home/test 与表达式 ^[a-zA-Z0-9]+/?$ 不匹配。第一个 / 之后的第二组存在于您的 $ 字符串终止符之外。您需要添加第二个() 组,这是可选的。我已经用 [^/]+ 替换了 a-zA-Z0-9 字符类,它与下一个斜杠匹配。

(?:) 表示包含第一个/ 的非捕获组,其中包含捕获组() 以检索$2 组件。整个构造是可选的,在最后一个 $ 终止符之前使用 ?

RewriteEngine On
RewriteRule ^([^/]+)(?:/([^/]+)/?)?$ index.php?p=$1&s=$2 [L,QSA]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多