gpt4 book ai didi

php - Apache 重写 URL 创建链接问题

转载 作者:行者123 更新时间:2023-12-04 19:12:06 24 4
gpt4 key购买 nike

问题:重写 url 导致某些链接中断。

.htaccess 有以下规则:

RewriteRule ^blog/([0-9]+)/[-0-9a-zA-Z]+$ index.php?action=blog&postID=$1\%23disqus_thread [NC]

页眉模板中的样式表引用:

<link rel="stylesheet" type="text/css" href="style.css" />

我可以点击:

domain.com/blog/1/title-of-article 并很好地访问文件,但样式表链接断开

如果我直接去:

domain.com/index.php?action=blog&postID=1#.UYV1mcqRiSo 然后样式表加载正常(忽略#.UYV1mcqRiSo,这是来自 Disqus 的代码)

这也破坏了我的 Logo 链接,即:

<a href="./">

它不会带我去 domain.com,而是去 domain.com/blog/1/

我的基本文件结构是:

index.php 和 style.css 在根目录下,会加载/templates 文件夹中的 viewPost.php。

这是怎么回事,我该如何纠正?

最佳答案

<强>1。关于样式表链接

在重写规则之前,您必须在 .htaccess 中包含这些条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

第一个意味着重写规则仅在请求的 URL 到现有文件时才起作用,第二个对现有目录也是如此。如果没有这些条件,请求 style.css也传递给你的 index.php文件,而不是 style.css直接归档。

如果您已经有了这些规则,但它仍然不起作用,那么问题出在 URL 路径上,请参见下文。

<强>2。关于 URL 路径

您在您的链接中使用了相对 URL,两者都在 <a href="./"> 中。在<link>标签。在这种情况下,它们被解析为 URL 的当前目录(它被重写到同一个文件服务器端并不重要,路径是在客户端准备的,每个用斜杠分隔的部分 / 被视为目录。因此,如果当前 URL 是 domain.com/blog/1/./ 将解析为 domain.com/blog/1/。) style.css可能会解析为 domain.com/blog/1/style.css。如果您希望这些链接像直接位于 URL 中的域名之后一样工作,则必须使用绝对 URL,即 / Logo 上没有链接点; /style.css用于样式表链接。

关于php - Apache 重写 URL 创建链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com