RewriteRule页面+类别问题

时间:2011-03-23 08:13:28

标签: php .htaccess mod-rewrite include

我有以下.htaccess重写网址,例如url.com/category/page和url.com/page,然后是PHP来设置$ _GET的变量。

问题是页面category.php只适用于url.com/category但是当我想去url.com/category/page时它会失败,因为文件category.php和文件夹类别需要存在并且因为文件夹存在它不起作用...我不确定这是否有意义,但我真的没有看到解决方法...

的.htaccess

RewriteEngine On
RewriteCond  %{REQUEST_FILENAME}  !-f
RewriteCond  %{REQUEST_FILENAME}  !-d
RewriteRule ^([^/]+)/([^/]+)$  index.php?category=$1&page=$2   [L]
RewriteCond  %{REQUEST_FILENAME}  !-f
RewriteCond  %{REQUEST_FILENAME}  !-d
RewriteRule ^([^/]+)$  index.php?page=$1    [L]

PHP

$url = '';
if (!empty($_GET['category'])) {
    $url .= $_GET['category'] . '/';
}
if (!empty($_GET['page'])) {
    $url .= $_GET['page'] . '.php';
} else {
    $url .= "pages/home.php";
}
include $url;

1 个答案:

答案 0 :(得分:0)

您的代码中有一个条件会将浏览器重定向到它所在的文件夹
RewriteCond %{REQUEST_FILENAME} !-d)。如果你删除它,它应该工作。

如果您想将其有条件地重定向到文件夹(如果存在),您可以使用PHP中的if语句进行调整。