gpt4 book ai didi

php - 此 mod_rewrite 规则如何导致我的任何文件无法加载?

转载 作者:行者123 更新时间:2023-12-02 13:49:37 26 4
gpt4 key购买 nike

以下 mod_rewrite 规则导致我的网站在我输入 localhost/signin/时表现奇怪。

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^signin/?$ access.php [NC,L]

它会导致所有带有相对链接的附加文件(图像、css、php、js)无法加载?但是,当我输入 localhost/signin 时,所有附加文件都会加载,就像没有任何问题一样。我认为发生这种情况是因为/signin/被视为一个目录,并且所有相关链接将查找所有附加文件的不存在目录。

编辑:我找到了一个解决方案,但它涉及到混淆我的标记,这不是我想要的。看看我下面的回答你就会明白了。

但是,我希望重写规则忽略这些附加文件。

最佳答案

问题

您遇到的问题(经过澄清)与重写规则的使用无关。请编辑您的问题以准确反射(reflect)您的问题。

几乎可以肯定,因为您有以下引用资料:

<link rel="stylesheet" type="text/css" href="css/foo.css">
<script src="js/foo.js">

这意味着用于查找 css/js 文件的路由取决于当前请求的目录(虚拟或真实)。

如果当前请求是/foo,则该请求位于根目录中。因此,将请求以下网址:

/css/foo.css
/js/foo.js

但是,如果当前请求是/foo/,则该请求位于目录 /foo/ 中。因此,将请求以下 ur:

/foo/css/foo.css
/foo/js/foo.js

使用绝对网址

避免这种情况的方法就是在链接/脚本标记中使用绝对网址:

<link rel="stylesheet" type="text/css" href="/css/foo.css">
<script src="/js/foo.js">

这样,无论当前 url 是什么,都会使用链接和脚本标记中的确切 url。

基本标签 - 小心

正如您在自己的答案中指出的那样,您可以使用基本标签 - 但更明显的是不依赖它。某些浏览器也存在问题,例如将“#”转换为对“/#”的请求,这是忽略基本标记存在的另一个原因。

关于php - 此 mod_rewrite 规则如何导致我的任何文件无法加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022286/

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