我完全不理解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
答案 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>