我在htaccess文件中编写以下规则,将查询字符串更改为目录结构
RewriteRule ^dashboard/([0-9]*)?$ dashboard.php?user_id=$1
用于重写网址。
工作正常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
附加到所有链接
答案 0 :(得分:1)
这是因为你“告诉他”这样做。
RewriteRule ^dashboard/([0-9]*)?$ dashboard.php?user_id=$1
// ^here you tell him to print that "dashboard"
当然其他链接也可以使用 - 您甚至不会将它们与该规则匹配。
我找到了here的内容,向下滚动到“Strip Query Strings”标题。在那里,它说你这样做:
RewriteCond %{QUERY_STRING} example=
RewriteRule (.*) http://www.domain.com/$1? [R=301]
当然,只需将该网址更改为您自己的网址。
答案 1 :(得分:1)
你的html文件中引用了style.css如何?
如果你有这样的href =“css / style.css”,HTML不知道你正在重写,think / 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,脚本或图像之前将其放入 ;)