包含页面和mod_rewrite的问题

时间:2014-07-28 16:19:26

标签: php regex apache .htaccess mod-rewrite

我有一些问题,包括文件,然后用mod_rewrite重写网址。 我使用$ _GET在index.php中包含页面。我的代码看起来像那样:

if(isset($_GET['page']))
{
    $file = "./pages/$page.php";
    if (file_exists($file))
    {
        include($file);
    }

这段代码工作正常,我能够使用domain.tld / index.php?page = example访问所有页面。但我想在其上使用mod_rewrite,以便我可以通过domain.tld / Example访问这些页面。那是我的问题。每当我打开这个链接,我都可以看到这个页面的内容,所以它可以工作,但是没有css,当我打开.css文件时,它显示了404错误。在$ _GET上使用print_r后,我的$ _GET ['page']看起来像:Array([page] => css / menu.css)。所以php将我的css页面的链接解释为包含页面的值。任何人都可以帮助我解决这个问题,我很困惑如何应对它...

Options +FollowSymLinks -MultiViews


ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.html

RewriteEngine on
RewriteBase /timetable
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L]`

抱歉我的英语不好提前^^

1 个答案:

答案 0 :(得分:1)

RewriteCond仅适用于距离最近的RewriteRule。您的第一条规则是使用RewriteCond重写您需要避免的每个文件和目录。

用以下内容替换您的规则:

Options +FollowSymLinks -MultiViews

ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.html

RewriteEngine on
RewriteBase /timetable/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]