我在htaccess文件中编写了以下规则,以将查询字符串更改为目录结构
RewriteRule ^dashboard/([0-9]*)?$ dashboard.php?user_id=$1
用于重写url。它在
上工作正常localhost/project/dashboard // (dashboard.php)
和所有链接都是
localhost/project/css/style.css
localhost/project/js/script.js
但是当我添加id
localhost/project/dashboard/1 // (dashboard.php?user_id=1)
它将所有链接更改为
localhost/project/dashboard/css/style.css
localhost/project/dashboard/js/script.js
为什么将dashboard
附加到所有链接
如何在html文件中引用style.css ?
如果你像这样设置href="css/style.css", HTML不会知道你在重写,它会认为/1是一个文件夹,并会查看dashboard/css/style.css
任何使用url重写的系统通常都必须写出样式和脚本的所有路径来避免这种情况。所以你必须像这样参考你的风格href = " http://localhost/project/css/style.css "
如果您有一个生产和开发环境,它将帮助您使用像
这样的变量if($SERVER['SERVER_NAME']=='localhost'){
$BASE_URL = "http://localhost/project/"
}else{
$BASE_URL = "http://mydomain.com/"
}
,并把它放在任何css,脚本或图像调用之前div;)
那是因为你"告诉他"那样做。
RewriteRule ^dashboard/([0-9]*)?$ dashboard.php?user_id=$1
// ^here you tell him to print that "dashboard"
当然其他链接也可以——你甚至不需要用这个规则来匹配它们。
我在这里找到了一些东西,向下滚动到标题"条带查询字符串"。这里,它让你这样做:
RewriteCond %{QUERY_STRING} example=
RewriteRule (.*) http://www.domain.com/$1? [R=301]
当然,把url改成你自己的。