$ 1为空时.htaccess重定向

时间:2014-01-27 18:15:04

标签: php apache .htaccess mod-rewrite rewrite

我正在建立一个在线商店,我正在尝试将每个商店子文件夹重定向到标准shop.php页面,该页面显示按网址路径过滤的结果作为类别。

结构是 mydomain.com/shop/category ,其中 category 是存储在数据库中的字段。

我使用以下php代码过滤结果:

$url = isset($_GET["url"]) ? $_GET["url"] : false;

if (!$url)
    $where_products = "WHERE 1";
else
    $where_products = "WHERE c.url = '$url'";

/* list products filtered by where clause */ 
$sql_products = "SELECT p.name FROM `product` p INNER JOIN `category` c ON p.id_category = c.id $where_products LIMIT 0,80";

现在我有以下.htaccess文件,用于将子文件夹重定向到正确的url变量:

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^shop/([^/\.]+)/?$ shop.php?url=$1 [L]

现在一切正常,但当我尝试使用mydomain.com/shop/显示所有产品时,我收到了以下错误信息

在此服务器上找不到

/ shop /

如果没有调用子文件夹,我该怎么办.htaccess文件才能正确重定向所有产品?

1 个答案:

答案 0 :(得分:1)

调整正则表达式以支持0个或更多字符,而不是1 or more characters

尝试此规则:

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^shop/([^/.]*)/?$ /shop.php?url=$1 [L]