繁体   English   中英

htaccess rewriterule目录重定向

[英]htaccess rewriterule directory redirect

当用户请求目录(如果文件存在)时,我正在使用htaccess加载文件,因此,如果转到/ login /,则加载/login.php等。

如果请求不是index.php,并且如果“ map”(文件)不存在,则应该加载user.php及其后面的地图,因此/ thomas /应该加载user.php?dir = thomas

这就是我想要的,但是我似乎无法使其正常工作,这目前是我的htaccess,它可以工作,但是login / register / logout也附加到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]

我希望像根一样发生同样的事情。 我想要它尝试,例如,当我转到/ settings / modules时,它首先检查/settings/modules/index.php是否存在,如果不存在,则检查/settings/modules.php是否存在,如果不存在,则检查设置.php存在(如果包含)来包含settings.php?args = modules,但我不知道这是否可行:\\

我希望我的意图很明确x)

尝试:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM