【问题标题】:URL Rewriting/Regex DebugURL 重写/正则表达式调试
【发布时间】:2009-04-15 22:15:24
【问题描述】:

我需要用新的眼光来看待这件事。我很难发现问题。

在文件夹 X 中,我有一个 .htaccess 文件,其中包含以下两行:

RewriteEngine on
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [NC,L]

我的解释是,该目录中的任何内容都将被重定向到项目显示页面。问题是在 item-display 页面上,回显 bibid 输出 'display-item' 的值。所以我以某种方式重定向: http://localhost/test/cat/item/14056a 至:http://localhost/test/cat/item/item-display.php?bibid=item-display

有什么想法吗?

干杯

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    您必须排除要重定向到的文件,因为该文件也与模式匹配:

    RewriteCond %{REQUEST_URI} !/item-display\.php$
    RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [L]
    

    【讨论】:

    • 其实我觉得这比我的更安全 :)
    【解决方案2】:

    试试这个

    RewriteEngine on
    RewritePath /test/cat/item
    RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [L]
    

    我认为问题在于它正在查看整个 URL,而不仅仅是最后一个项目 ID 部分。

    【讨论】:

    • 我认为你在 RewriteBase 之后......它似乎并没有改变结果。到达正确的页面,然后认为 bibid 设置为“display-item”。我正在进一步阅读 RewriteBase,希望能在文档中找到一些东西。
    【解决方案3】:

    请求是子处理的,因此它提取了我假设的重写 URL 的文件名部分。尝试添加 NS 标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多