忽略来自htaccess rewriterule

时间:2017-07-19 20:16:25

标签: php .htaccess redirect mod-rewrite

我完全不理解htaccess,除了它的“pretify”url的功能,我知道这个问题已被问过几百万次,我已经尝试过几乎所有这些问题,但没有一个答案适合我。

所以基本上我已经给自己创造了一个cms和一个结构。 “cms”位于一个名为system的子文件夹中,它有自己值得尊敬的index.php

我的htaccess被配置为获取var“page”并从url中撤回.php扩展名。一切正常,直到我开始从系统子文件夹中调用页面。

我的问题是,我怎样才能让htacces忽略这个文件夹并继续它的重写规则,尽管用户当前位于子文件夹中?

我的htaccess设置如下:

RewriteEngine On
Options +FollowSymLinks

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

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [QSA]

<Files .htaccess>
order allow,deny
deny from all
</Files>


ErrorDocument 404 home
ErrorDocument 403 home

#php_flag display_errors off 

1 个答案:

答案 0 :(得分:0)

有这样的话:

ErrorDocument 404 /home
ErrorDocument 403 /home

RewriteEngine On
Options +FollowSymLinks

# skip subfolder from any rules
RewriteRule ^subfolder(/.*)?$ - [L,NC]

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

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^system/(.*)$ system/index.php?page=$1 [L,NC,QSA]

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

<Files .htaccess>
order allow,deny
deny from all
</Files>