【问题标题】:"RewriteRule ^([^/]+) index.php?id=$1" posts "index" instead entered text"RewriteRule ^([^/]+) index.php?id=$1" 帖子 "index" 改为输入文本
【发布时间】:2009-01-11 22:20:57
【问题描述】:

如果我通过在 url 中键入 /?id=some_text 来执行此操作,那么 index.php 脚本将按原样工作,但如果我执行 /some_text 然后 index.php 总是接收到具有值“index”的 id。

起初我有 RewriteRule ^([^/]+) ?id=$1 但返回的是“内部服务器错误”而不是网页,然后我将其更改为 RewriteRule ^([a-z]+) index.php?id=$1 并且我停止接收错误页面但脚本无论我输入什么,都开始接收“索引”作为值

此规则在使用 MAMP 的本地计算机上有效,但是当我将其上传到服务器时它停止工作。

此文件夹的.htaccess 文件仅包含此规则

RewriteEngine on
RewriteRule ^([^/]+) ?id=$1

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    我相信它可能试图通过 index.php 进行递归,因为它似乎符合规则。

    试试:

    RewriteEngine On
    RewriteCond  %{REQUEST_URI}  !index
    RewriteRule ^([^/]+) index.php?id=$1 [L]
    

    RewriteCond 是为了确保它不会将规则应用于自身的结果。而 [L] 是为了确保它不会尝试应用任何其他规则。

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 2018-09-01
      • 1970-01-01
      相关资源
      最近更新 更多