我有一些问题,包括文件,然后用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]`
抱歉我的英语不好提前^^
答案 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]