在使用重写url之前,每次正确显示
但是当我使用重写网址时
http://localhost/mgosoft/admin/userreg/
请帮我解决这个问题谢谢:)
答案 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" />
的参考资料