.htaccess 由于url重写,未加载CSS、图像和JS
当我的url以a/结尾时,我在加载css和图像方面遇到了麻烦。我正在使用本地主机,URL被改写为:.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
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="/" />