.htaccess 文件中的多个重写条件和文件夹异常
Multiple rewrite conditions and folder exception in .htaccess file
我正在处理我的网站并遇到 .htaccess
文件的一些问题。
我得到了一个主目录(在我的例子中是 public_html)和一个名为 admin
的子目录。
我试图管理的是,如果最终用户输入 URL,如 example.com/admin
,他将被重定向到包含登录表单、自定义 index.php 文件的 admin
目录等等。
如果输入了other url,则需要通过一些条件来检查。
这是我的 .htaccess 文件:
对于主目录:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?menu=&op=&id= [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)$ index.php?menu=&op= [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)$ index.php?menu= [QSA,L]
对于管理目录:
RewriteEngine off
现在主目录 .htaccess
文件在输入 url 后正常工作,例如:
example.com/news/article/4
example.com/news/list
示例。com/home
但如果我输入 example.com/admin
,它与第三个重写规则相关联,并认为 'admin' 是一个菜单 link。
我尝试了不同的例外,但对我没有任何效果,admin
仍然与菜单而不是目录相关联。也许我的主要 .htaccess 文件有一些错误?有人可以建议我解决这个问题的正确方法吗?
您不需要 admin
目录中的任何 .htaccess
。只需在 root .htaccess 中包含这些规则:
DirectorySlash On
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?menu=&op=&id= [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?menu=&op= [QSA,L]
RewriteRule ^([^/]+)/?$ index.php?menu= [QSA,L]
我正在处理我的网站并遇到 .htaccess
文件的一些问题。
我得到了一个主目录(在我的例子中是 public_html)和一个名为 admin
的子目录。
我试图管理的是,如果最终用户输入 URL,如 example.com/admin
,他将被重定向到包含登录表单、自定义 index.php 文件的 admin
目录等等。
如果输入了other url,则需要通过一些条件来检查。
这是我的 .htaccess 文件:
对于主目录:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?menu=&op=&id= [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)$ index.php?menu=&op= [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)$ index.php?menu= [QSA,L]
对于管理目录:
RewriteEngine off
现在主目录 .htaccess
文件在输入 url 后正常工作,例如:
example.com/news/article/4
example.com/news/list
示例。com/home
但如果我输入 example.com/admin
,它与第三个重写规则相关联,并认为 'admin' 是一个菜单 link。
我尝试了不同的例外,但对我没有任何效果,admin
仍然与菜单而不是目录相关联。也许我的主要 .htaccess 文件有一些错误?有人可以建议我解决这个问题的正确方法吗?
您不需要 admin
目录中的任何 .htaccess
。只需在 root .htaccess 中包含这些规则:
DirectorySlash On
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?menu=&op=&id= [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?menu=&op= [QSA,L]
RewriteRule ^([^/]+)/?$ index.php?menu= [QSA,L]