URL重写:CSS,JS和图像不加载(URL rewriting : css, js, and im

2019-06-18 13:11发布

我下面的规则.htaccess

Options +FollowSymLinks

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteRule ^detail/([0-9]+)/?$ detail.php?id=$1

它重定向http://localhost/detail/123 URL到http://localhost/detail.php?id=123 。 页面重定向成功,但问题是, CSS, JS, and images不加载,

CSS,JS文件位于http://localhost/css/http://localhost/js/

一个解决方案是使用绝对路径 (例如/ CSS,或/ JS,而不仅仅是CSS /,/ JS但是这似乎是一个可靠的解决方案不,因为我们已经改变它的所有文件,

基于任何其他解决方案.htaccess的规则,这是独立编辑的所有PHP文件,让我们用“相对路径”的?

Answer 1:

不要偷懒,改变你的相对URI在你的资源。 这是最好的。

你可以弄巧,并使用正则表达式替换所有你需要的是像一个为数不多衬垫的文件,你就大功告成了。 有多少地方莫不是改变? 你应该使用的模板。

这应该工作,但我不会走这条路。

RewriteRule ^detail/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301]



Answer 2:

一个解决方案是使用绝对路径(例如/ CSS或/ JS,而不是仅仅的CSS /,/ JS但由于我们改变它的所有文件,这是不是看起来可靠的解决方案,

这是因为你的相对URI有自己的基地改变。 原来,基地/页面时/detail.php?id=123 ,浏览器与相对链接,适当填充/基地。 但是当浏览器进入到像页/detail/123基部突然变得/detail/和它试图附加在所有相对URL的前面,因此没有一个加载。

你可以让你的链接是绝对的,或在您的网页的标题更改URI基地(插图中的<head> </head>标记):

<base href="/">


Answer 3:

我申请URL重写到PHP核心的项目。 我面临着同样的问题。 CSS,JS和图片并没有获得加载。 我用这个和它的工作对我来说。 资源

# Allow any files or directories that exist to be displayed directly
RewriteCond ${REQUEST_URI} ^.+$
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]


Answer 4:

安东尼的回答是完全有效的,并且他实际上是试图传授一些好的做法存在。

但是,因为你似乎并不满足于这个问题的答案,这里是一个不同的解决方案。 只需插入此行到任何重写命令之前,你的.htaccess:

RedirectMatch permanent ^/detail/((css|js)/.*)  /$1

这将重定向所有/details/css/style.css和/details/js/js.s自己的实际位置,原本404个请求。 无论particluarly漂亮也不优雅,但它只是工作。



Answer 5:

此代码对我很好地工作,重定向规则前添加(重写规则^细节/([0-9] +)/ $ detail.php?ID = $ 1)

RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images)/(.*)$ $2/$3 [L]


文章来源: URL rewriting : css, js, and images not loading