【发布时间】:2021-12-14 17:03:44
【问题描述】:
到目前为止,我一直在使用 GET 参数在我的网站页面之间进行路由(托管在我大学的服务器上)。我想改用$_SERVER["PATH_INFO"],因为我猜它是一种更简洁的页面间路由方式。
我想从:
www.universitydomain.subdomain/myProject/index.php?action=imageGallery
收件人:
www.universitydomain.subdomain/myProject/index.php/imageGallery
我有 3 页:
- 我的主页,index.php
- 我的图片库页面,当前可访问
当GET参数
action等于“imageGallery”时 - 将图像添加到我的画廊的页面,当 GET 参数
action时可访问 等于“addImage”
在每个页面上都有一个由<a> 链接组成的菜单:
<a href="index.php" > Main page </a>
<a href="?action=imageGallery" > Gallery </a>
<a href="?action=addImage" > Add image </a>
这样做时,一切正常。所以我尝试使用PATH_INFO 样式的 URL,如下所示:
<a href="index.php" > Main page </a>
<a href="index.php/imageGallery" > Gallery </a>
<a href="index.php/addImage" > Add image </a>
如果我在图库页面上,我希望 <a>Main pagey</a> 链接在我的 URL 中写入 index.php,这会将我带回主页。然而,这种情况发生了:
- 我在
index.php。 网址是www.universitydomain.subdomain/myProject/index.php - 我点击第二个链接进入画廊。网址变成
www.universitydomain.subdomain/myProject/index.php/imageGallery - 我单击第一个链接返回主页。网址变成
www.universitydomain.subdomain/myProject/index.php/index.php - 在第三步,如果不是返回主页,我
点击第三个链接进入
addImage页面,网址 变成www.universitydomain.subdomain/myProject/index.php/index.php/addImage
这是为什么呢?我无法重现我的问题的最小示例,因此它似乎与我的项目相关(不幸的是,这有点太大,无法包含在这篇文章中)。即使无法重现此问题,你们中的一些人也可能会与之相关并提出一些建议。
我的印象是,在进入图库页面(其 URL 为 /myProject/index.php/imageGallery)后,我的页面的“参考路径”已从 /myProject/ 更改为 /myProject/index.php/,因此,当点击<a href="index.php"> 链接,它将我重定向到 /myProject/index.php/index.php 而不是 /myProject/index.php/
【问题讨论】:
-
“为什么会这样?” 这是将 href 属性中的相对 URL 解析为它所属的超文本文档的基本 URL。此分辨率是标准化的,以及如何获取文档基本 URL。图库页面上 index.php 的链接必须是
"../index.php"而不是"index.php"否则浏览器会以这种方式运行。比较:greenbytes.de/tech/webdav/rfc3986.html#reference-resolution 了解所有选项。 -
感谢参考链接,非常有用。
标签: php url-routing pathinfo