2012-08-03 86 views
0

我正在做一个使用php.I项目重写了一些动态url。Url重写重定向到错误页面

的http:// domain.com/?a=username

我是URL改写成

的http:// domain.com/username

在索引页将使用$ _GET ['a']值从数据库中选择值。如果在数据库中找不到$ _GET ['a'],它将产生错误消息。其实我的问题是服务器将包含css文件夹。当从css获得一个css文件时,它将被重定向到错误页面。请帮助我的人来克服这个问题

代码

$cat=$_GET['a']; 
    $sql="SELECT * FROM `content` WHERE category=$cat"; 
$result=mysql_query($sql); 
$no=mysql_num_rows($result); 
if($no>0) 
{ 

    while($row = mysql_fetch_array($result)) 
     { 
      $id=$row['id']; 
     } 

     S($id,$cat,$sub,$year); 
} 
else 
{echo "<META HTTP-EQUIV=Refresh CONTENT='0; URL=error.php'>"; 
} 

回答

0

在上面重写规则.htaccess文件,添加以下内容:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

好吧,其实第一个是规则你需要,第二只是确保你可以访问另一个目录在未来(例如你想有一些其他脚本里面subdir)

0

这样做:

  1. 创造像JS/CSS资产的公共目录
  2. 有你的.htaccess(或任何你正在使用做干净的URL)指向所有请求开始与您的公共文件夹路径的路径
  3. 设置你设置了一个param代码通过做这种方式是这样的$path = !empty($_GET['a']) ? $_GET['a'] : '';

,你会得到这些好处:

mysite.com/someextension =>您url = someextension

,你可以直接通过URL打你的资产:mysite.com/public/css/style.css

0

做这样的事情:

if(preg_match('/[0-9a-zA-Z]+\.css$/', $_GET['a'], $url)) 
{ 
    header("Content-type: text/css"); 
    echo file_get_contents('./css/' . $url[0]); 
    exit(); 
}