我无法访问我的css&我使用重写网址时的js文件

时间:2014-09-20 13:12:10

标签: php css url-rewriting

在使用重写url之前,每次正确显示

without using rewrite url

但是当我使用重写网址时

http://localhost/mgosoft/admin/userreg/

when used rewite url

请帮我解决这个问题谢谢:)

3 个答案:

答案 0 :(得分:1)

当你使用php时,只需使用$site_addr = $_SERVER['HTTP_HOST']; 并在所有链接之前添加此内容,例如 - >

<link rel="stylesheet" type="text/css" href="<?php echo $site_addr; ?>css/style.css">

希望它会有所帮助

答案 1 :(得分:1)

@ O-mkar几乎把它钉了起来。您可以做的另一件事 - 如果您不想通过整个项目更改所有引用:使用另一个htaccess行自动将其重写为正确的URL(对于/css/目录)::

RewriteCond %{REQUEST_URI} !^/css/ [NC]
RewriteRule ^.*/css/([^/]+)$ /css/$1 [L, R=301]

我会重写任何错误的网址,例如http://localhost/mode/movies/view/profile/css/style.css

到固定资源路径http://localhost/css/style.css

OFC。 localhost需要匹配正确的外部主机名。

取决于原始重写的通用程度,您应该排除资源路径重新编写,或者最终得到无限重写循环:

RewriteCond %{REQUEST_URI} !^/css/ [NC]
RewriteCond %{REQUEST_URI} !^/images/ [NC]
RewriteCond %{REQUEST_URI} !^/javascript/ [NC]

等...


截至您给出的示例,资源文件为assets/css/themes/simple/style.css

您基本上需要说:使用此String将任何ENDS重写到根文件夹。 因此,它将是:

RewriteCond %{REQUEST_URI} !^/assets/css/themes/simple/ [NC] #skip, if already rewritten
RewriteRule ^.*/assets/css/themes/simple/([^/]+)$ /assets/css/themes/simple/$1 [L, R=301]

你可以使用这个漂亮的页面来玩:http://htaccess.madewithlove.be/

在上面的示例和请求网址http://localhost/mode/movies/assets/css/themes/simple/style.css中查看,它将成为http://localhost/assets/css/themes/simple/style.css

OFC。你可以像这样播放arround并重定向/assets/的每个子文件,然后你不需要为每个文件创建规则。

ps。:如果您使用[L, R=301]重定向资源,浏览器缓存也会正常工作,因为它会记住所请求文件的永久移动。 - 没有R = 301它会一直认为这是不同的文件。

答案 2 :(得分:0)

您也可以试试这个 对于您的本地版本,添加

<base href="//localhost/mywebsite" />

到头部

并为您的实时版本将其更改为

<base href="//your.domain.here" />

http://www.w3.org/TR/html4/struct/links.html#h-12.4

的参考资料