由于网址重写而导致CSS,图片和JS无法加载

时间:2016-07-05 22:45:25

标签: .htaccess url url-rewriting

我的css和图片在我的网址以/结尾的那一刻加载有问题。我正在处理我的本地主机,并且以下列形式重写了网址:

localhost/mysite/public/user/testuser/books/1234

请求加载testuser的用户个人资料页面并更改页面状态以关注ID为1234的图书。

使用localhost / mysite / public / user一切正常,但是当我将一个/或/ testuser引入到CSS,JS和Images的url中时。我确实有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]

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

1 个答案:

答案 0 :(得分:3)

如果您不想在移动网站时更改每个实例,只需更新html网页标题的<head>部分并添加此

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

<base href="/" />

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