Php .htaccess在子文件夹中

Php .htaccess在子文件夹中,php,apache,.htaccess,Php,Apache,.htaccess,我在这里读了很多关于这个的话题,但是出于某种原因,它对我不起作用,我完全困惑了。我知道,我把事情搞砸了,我就是想不出是什么 我有一个站点,index.php正在调用路由器,并显示我想要的内容 我已经创建了一个“管理员”页面,我希望Web服务器对每个以/admin/开头的请求都使用/admin/index.php 以下是我尝试的: RewriteEngine ON RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}

我在这里读了很多关于这个的话题,但是出于某种原因,它对我不起作用,我完全困惑了。我知道,我把事情搞砸了,我就是想不出是什么

我有一个站点,
index.php
正在调用路由器,并显示我想要的内容

我已经创建了一个“管理员”页面,我希望Web服务器对每个以
/admin/
开头的请求都使用
/admin/index.php

以下是我尝试的:

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^admin/(.*)$ admin/index.php?action=$2   [L,NC]
RewriteRule ^(.*)$ index.php?action=$1 [L]
我回显了
index.php
中的一些信息,以查看哪个处理了我的请求

如果我在写
http://localhost
上面写着
前端

当我尝试
http://localhost/admin/
它再次显示
前端

如果我将管理行移动到第一条规则下面,如下所示:

RewriteRule ^(.*)$ index.php?action=$1 [L]
RewriteRule ^admin/(.*)$ admin/index.php?action=$2   [L,NC]
RewriteEngine On

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^admin/(.*)$ admin/index.php?action=$1 [L,NC,QSA]

RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]
然后
http://localhost/admin/
Admin
什么才是真正好的

但是如果我尝试
http://localhost/admin/users
实际上没有什么,因为管理员的路由器应该处理这个问题,它说
Frontend

我应该如何设置
.htaccess
以在所有情况下使用
/admin/index.php
,其中
http://localhost/admin/
在URI中?

如下所示:

RewriteRule ^(.*)$ index.php?action=$1 [L]
RewriteRule ^admin/(.*)$ admin/index.php?action=$2   [L,NC]
RewriteEngine On

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^admin/(.*)$ admin/index.php?action=$1 [L,NC,QSA]

RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]

第一个请求规则做什么?就是说,“如果文件/dir确实存在,那么就不要重写任何东西”?这意味着如果文件/dir确实存在,那么就忽略其他规则谢谢,它工作得很好,我会接受它,相反,
$2
应该是
$1