0

我正在使用 php 做一个项目。我重写了一些动态 url。

http://domain.com/?a=用户名

我把网址改写成

http://domain.com/用户名

在索引页面中将使用 $_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'>";
}
4

3 回答 3

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();
}
于 2012-08-03T16:59:27.707 回答
0

在 RewriteRule 上方的 .htaccess 文件中,添加以下内容:

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

好吧,实际上第一个是您需要的规则,第二个只是确保您将来能够访问另一个目录(例如,您希望在 subdir 中有一些其他脚本)

于 2012-08-03T16:29:09.777 回答
0

做这个:

  1. 为 js / css 等资产创建公共目录
  2. 让您的 .htaccess (或您用来执行干净 url 的任何内容)将所有请求指向以您的公用文件夹路径的路径开头
  3. 将代码中的 A 参数设置为这样$path = !empty($_GET['a']) ? $_GET['a'] : '';

通过这样做,您可以获得以下好处:

mysite.com/someextension => 你的url = someextension

您可以使用直接网址访问您的资产:mysite.com/public/css/style.css

于 2012-08-03T16:31:00.123 回答