2013-03-28 61 views
1

我写在htaccess文件下列规则更改查询字符串作为目录结构PHP重写规则不工作的查询字符串

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所有链接

回答

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,脚本或图像 任何调用之前;)

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] 

只是,当然,将该网址更改为您自己的。