【问题标题】:RewriteRule, GET parameters and Relative PathRewriteRule、GET 参数和相对路径
【发布时间】:2016-12-20 21:02:26
【问题描述】:

我需要一个关于 htaccess 和相对路径中的重写规则的解释......

在我的项目中,我有两个文件:

 - index.php
 - photos.php

在我的 htaccess 文件中,我有:

RewriteRule ^home$ index.php
RewriteRule ^photos/([0-9]+)$ photos.php?&id=$1

我使用此地址访问我的photos.php 文件:

http://www.example.com/photos/15

在我的 photos.php 文件中,如果我创建链接 <a href="home",我会收到 404 错误。因为它试图访问 URL:http://www.example.com/photos/index.php

谁能向我解释我的错误是什么?

【问题讨论】:

  • 这完全是客户端/浏览器问题,而不是 .htaccess/RewriteRule。 浏览器 将任何相对路径解析为相对于当前 URL 路径(除非您有 base 元素)。就浏览器而言,您现在位于一个名为“photos”的“目录”中,因此任何相对客户端路径都将与“photos”子目录相关。 “照片”不作为物理目录存在并不重要——浏览器/用户不知道这一点。

标签: php .htaccess mod-rewrite path


【解决方案1】:

由于您使用的是相对 URL href="home",而您当前的 URL 是:/photos/15,这就是为什么浏览器将此相对 URL 解析为 /photos/home,这显然会导致 404。

您必须确保这些文件的路径以http:// 或斜杠/ 开头。 否则您可以在页面 HTML 的 <head> 部分下方添加:<base href="/" /> 以便每个 相对 URL 都从该基本 URL 而不是当前页面的网址。

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 2010-09-15
    • 2011-03-20
    • 2013-07-14
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多