我有以下项目结构:
site
|---admin
| |---index.php (echo 'admin. request uri: '.$_SERVER['REQUEST_URI'];)
| |---...
|
|---category
| |---index.php (echo 'category. request uri: '.$_SERVER['REQUEST_URI'];)
| |---...
|
|---...
|
|---index.php (echo 'main. request uri: '.$_SERVER['REQUEST_URI'];)
|---.htaccess
我想将所有请求重定向到文件夹中的index.php文件,该文件夹在url中指定(如果文件夹中存在index.php),否则重定向到root index.php文件。例如:
如果网址为 www.somedomain / admin / asdf ,则应将其重定向到 admin / index.php 文件。
如果网址 www.somedomain / asdf ,则应将其重定向到main 的的index.php
为了将所有请求重定向到index.php,我将以下规则添加到.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [L]
现在如果我输入 www.somedomain / asdf 重定向成功,结果是:
主。请求uri:/ asdf
但如果我输入 www.somedomain / admin / asdf 重定向错误(主要 index.php ,但应该是 admin / index .php ),结果是:
主。请求uri:/ admn / asdf
请帮助我在.htaccess文件中为此案例编写正确的规则。输出应如下:
管理员。请求uri:/ admn / asdf
答案 0 :(得分:2)
您可以在root .htaccess中使用此规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)[^/]+/?$ $1index.php [L]