alg*_*der 16 html css .htaccess mod-rewrite
我有以下用户个人资料网址的简写
RewriteRule ^(\w+)/?$ ./profile.php?name_of_user=$1
Run Code Online (Sandbox Code Playgroud)
当我这样做时,网站使用适当的css文件进行样式设置 site.com/name_of_user
但不是我做的时候 site.com/name_of_user/
虽然重定向是在右页...
感谢帮助!
小智 25
解决此问题的最简单方法是<head>
在HTML文件中指定CSS文件的完整路径.
如果您的mod_rewrite规则正在修改CSS文件所在的路径,那么您还需要将其放在RewriteRule
:
RewriteCond %{REQUEST_FILENAME} !-f
Run Code Online (Sandbox Code Playgroud)
这可确保请求在重写之前与文件不匹配.
Que*_*ery 14
我遇到了同样的问题,并找到了最简单,最实用的解决方案.
<base href="http://www.example.com/" />
Run Code Online (Sandbox Code Playgroud)
它非常干净,易于使用.
Cha*_*mal 12
链接相对于根目录示例的css文件:
<link rel="stylesheet" type="text/css" href="/css/****.css">
Run Code Online (Sandbox Code Playgroud)
当您的页面URL是example.com/name_of_user/
,如果您的HTML页面使用这些资源的相对路径,加载资源css/js/images可能会导致问题.这是因为浏览器使用当前URL解析资源URL.
例如,如果样式标记是:
<link rel="stylesheet" type="text/css" href="static/style.css">
Run Code Online (Sandbox Code Playgroud)
并且您当前的网页网址是:
http://example.com/name_of_user/
Run Code Online (Sandbox Code Playgroud)
然后浏览器将解析css URL example.com/name_of_user/static/style.css
而不是example.com/static/style.css
.这将导致404资源URL,您的页面将显示没有任何样式,脚本和图像.
您可以使用以下方法之一解决此问题:
在css,js,images文件中使用绝对路径而不是相对路径.这意味着您必须确保这些文件的路径http://
以斜杠或斜杠开头/
.
否则您可以在页面的HTML部分下面 添加<head>
:
<base href="/" />
Run Code Online (Sandbox Code Playgroud)以便从该基本URL解析每个相对URL,而不是从当前页面的URL解析.
尝试在你的html文档头部分设置正确的基础:
<head>
<base href="http://example.com/">
<head>
Run Code Online (Sandbox Code Playgroud)
然后,.htaccess规则中的任何额外斜杠(/)都不会更改html文档中的外部源路径.以下规则
RewriteEngine On
RewriteBase /
RewriteRule ^(\w+)/?$ ./profile.php?name_of_user=$1
Run Code Online (Sandbox Code Playgroud)
不会<base href="http://example.com/">
在文档中使用此行为<head>
.它将正常工作,尤其是对于相对站点文件结构.
归档时间: |
|
查看次数: |
39073 次 |
最近记录: |