当用户请求目录时(如果文件存在),我正在使用htaccess加载文件, 所以,如果你去/ login /你加载/login.php等等。
如果请求不是index.php,并且如果“map”(文件)不存在,它应该加载user.php及其后面的地图,所以/ thomas /应该加载user.php?dir = thomas
这就是我想要的,但我似乎无法让它工作,这是目前我的htaccess,它的工作原理,但登录/注册/注销也附加到user.php,当我取消注释该行当(例如)加载索引时,它将导致无限循环。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index\.php [NC]
#RewriteRule ^(login|register|logout)(/|)$ $1.php [L,NC,QSA]
RewriteRule ^([^\?]*)$ user.php?dir=$1 [L,QSA]
提前致谢!
编辑: 我更改了.htaccess,以便检查php文件是否存在,如果是,则包含它。但现在我的文件夹/ settings /不再起作用了;(
RewriteEngine On
RewriteBase /
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L,NC]
# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*?)(/(.*)|)$
RewriteCond %{DOCUMENT_ROOT}$1.php -f
RewriteRule ^(.*?)(/(.*)|)$ $1.php?args=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\?]+)$ user.php?dir=$1 [L,QSA]
我希望像root一样发生同样的事情。我希望它尝试例如,当我去/ settings / modules时,它首先检查是否存在/settings/modules/index.php,如果不存在,检查是否存在/settings/modules.php,如果不存在,检查是否设置.php存在,如果存在,包括settings.php?args = modules但我不知道这是否可能:\
我希望我的意图很清楚x)
答案 0 :(得分:0)
尝试:
RewriteEngine On
RewriteBase /
# let existing file/dir pass through untouched#
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
#####
RewriteRule ^(login|register|logout)/?$ $1.php [L,NC,QSA]
RewriteRule ^(.+)$ user.php?dir=$1 [L,QSA]