以下mod_rewrite规则导致我的网站表现奇怪我输入localhost / signin /。
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^signin/?$ access.php [NC,L]
它会导致所有附加文件(图像,css,php,js)的相关链接无法加载?但是,当我输入localhost / signin时,所有附加文件的负载都没有错。我认为这是因为/ signin /被视为一个目录,所有相关链接将查看所有附加文件的不存在目录。
编辑:我找到了一个解决方案,但它涉及弄乱我的标记,这不是我想要的。看看下面的答案,你会看到。
但是,我希望重写规则忽略这些附加文件。
答案 0 :(得分:4)
您遇到的问题(在澄清之后)与重写规则的使用无关。请编辑您的问题以准确表示您的问题。
几乎可以肯定,因为你有以下参考资料:
<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/
中。因此,将要求以下人员:
/foo/css/foo.css
/foo/js/foo.js
避免这种情况的方法只是在链接/脚本标记中使用绝对网址:
<link rel="stylesheet" type="text/css" href="/css/foo.css">
<script src="/js/foo.js">
这样,无论当前网址如何 - 都会使用链接和脚本标记中的确切网址。
您可以在自己的答案中注意使用基本标记 - 但不依赖它会更加明显。某些浏览器也存在问题,例如将“#”转换为“/#”请求,这是忽略基本标记存在的另一个原因。
答案 1 :(得分:1)
由于我没有足够的代表来提供正确的答案,所以它是:暴风雨天气的回答是一件非常好的事情。
它不仅可以直接为所有文件提供服务,还可以为文件夹执行此操作。如果您要启动一个新的临时项目,或者需要快速测试代码,这非常有用。只需创建一个包含index.php的新目录,服务器就可以正常使用它。
当然,如果没有-d标志,这也会起作用,但你也必须输入整个文件名,这可能会令人困惑。
无论如何,我更愿意只是回答我上面的答案,但是唉。
答案 2 :(得分:1)
经过长时间的搜索,我发现我可以使用:
<base href="/beta/" />
在每个HTML文件的head部分中修复相对路径。我对这种方法并不十分关心,因为它使我的标记变得混乱。如果有其他人有想法,请与我分享。
顺便说一下,我在Macbook Pro上使用MAMP Pro。