如果存在.htaccess,则将所有请求重定向到文件夹中的index.php

时间:2014-07-28 19:33:38

标签: .htaccess mod-rewrite redirect

我有以下项目结构:

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

1 个答案:

答案 0 :(得分:2)

您可以在root .htaccess中使用此规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)[^/]+/?$ $1index.php [L]