URL重写索引页面

时间:2018-06-05 06:07:59

标签: php .htaccess url-rewriting

我有一个网站 * https://www.example.com 。我想动态地打开home,category和sub-category,如:

https://www.example.com
https://www.example.com/education
https://www.example.com/education/PHP-Training

我已经像这样编写了index.php:

if(isset($_GET['category'])){
        $category = $_GET['category'];
        $subCategory = $_GET['subcategory'];
        include('files/categoryFile.php');
    }else{ 
        include('files/indexFile.php');
    }

categoryFile.php将使用上述两个变量$category$subCategory从数据库中获取数据,indexFile.php是索引页面的静态文件。 以下是重写规则.htaccess的代码:

RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+) index.php?category=$1&subcategory=$2 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?category=$1 [NC,L]

它在这里工作正常,但问题是,它还将https://www.example.com/css/style.css重写为同一规则。我可以通过使用以下代码将.htaccess文件拖放到此文件夹来阻止它重写这些特定文件夹:

<IfModule mod_rewrite.c>

#Disable rewriting
RewriteEngine Off

</IfModule>

但它对我来说似乎不是一个好的解决方案。我想知道是否有更好的解决方案。如果此问题与问题标准不符。请评论它,我将删除该问题。此外,如果可能有变化,建议编辑。感谢

1 个答案:

答案 0 :(得分:1)

我在我的一个项目中做过这件事。您必须在重写规则之前添加一个条件,还有一个条件是您应该创建资产文件夹,这样您就可以存储所有公共文件和文件夹,并且可以使用一个规则公开。

根据您的示例检查此解决方案。

    RewriteCond %{REQUEST_URI} !/css
    RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+) index.php?category=$1&subcategory=$2 [NC,L]
    RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?category=$1 [NC,L]

我认为你只需要添加几个条件来排除它们。

RewriteCond %{REQUEST_URI} !/css
RewriteCond %{REQUEST_URI} !/js
RewriteCond %{REQUEST_URI} !/images