.htaccess 由于url重写,未加载CSS、图像和JS

.htaccess 由于url重写,未加载CSS、图像和JS,.htaccess,url,url-rewriting,.htaccess,Url,Url Rewriting,当我的url以a/结尾时,我在加载css和图像方面遇到了麻烦。我正在使用本地主机,URL被改写为: localhost/mysite/public/user/testuser/books/1234 请求加载testuser的用户配置文件页面,并将页面状态更改为关注id为1234的书籍 localhost/mysite/public/user一切正常,但当我将/or/testuser引入url时,CSS、JS和图像就崩溃了。我确实有url重写的地方,并阅读了一些帖子,说明它是一个.htacces

当我的url以a/结尾时,我在加载css和图像方面遇到了麻烦。我正在使用本地主机,URL被改写为:

localhost/mysite/public/user/testuser/books/1234
请求加载testuser的用户配置文件页面,并将页面状态更改为关注id为1234的书籍

localhost/mysite/public/user一切正常,但当我将/or/testuser引入url时,CSS、JS和图像就崩溃了。我确实有url重写的地方,并阅读了一些帖子,说明它是一个.htaccess重写问题。以下是我的网站结构:

mysite/
    app/
        controllers/
        models/
        etc...
    public/
        css/
            styles.css
        images/
            profilepic.png
        js/
    index.php
所有图像、js和css都通过相对路径引用:ex:../public/css/styles.css

.htaccess的内容包括:

Options -MultiViews
RewriteEngine On

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

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我阅读了一系列解决方案,包括将所有路径更改为绝对路径或将它们更改为/css/styles.css。绝对当然有效,但当我将站点移动到其实际域时,我需要更改每个实例,这是没有意义的

还有一个关于排除css、jpeg等的注释。。。使用以下命令从重写中删除文件:

RewriteCond %{REQUEST_URI} !^.*\.(css|jpe?g|gif|png|js|ico)$ [NC]

不幸的是,这些选项都不起作用,我不确定我还应该去哪里寻找。有什么想法吗?

如果您不想在移动站点时更改每个实例,只需更新html页面标题的
部分并添加此内容即可

<base href="http://www.example.com/" />



这将解决该问题,并且您不必将所有实例更新为绝对路径

答案对你有用吗?是的,谢谢。这就成功了。我从未遇到过的实际实现。这让我想知道一些较大的网站正在做什么来解决这个问题,它们有类似的url重写。@Runicode很好地回答您的问题。大多数大型站点使用绝对路径。原因是由于一个站点变得非常大,并且取决于它是否使用cookie,大多数站点使用CDN或单独的域来承载其资产,所有大型站点都这样做,因为这是最佳实践。他们正在使用CDN或资产域的完整URL。只需查看一些大型网站的源代码即可。像Stackoverflow
http://cdn.sstatic.net/Js/stub.en.js?v=da42df2f72e3
这很有道理。谢谢
<base href="/" />