嗨,我正在配置我的.htaccess
网站以将我的网站投入生产,但问题是我不完全理解它,或者我与这个文件相处得不太好,这给我带来了问题。
我有以下目录结构:
index.php
login.php
.htaccess
includes/
└ panel.php
└ etc..
我.htaccess
现在配置如下:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L]
</IfModule>
尽管它们可以正常工作,index.php
因为login.php
它可以根据需要向我隐藏扩展名.php
。
当我登录并将我发送到时出现问题,它向我panel.php
显示如下地址:www.miweb.com/includes/panel,我不希望它显示'/includes/'目录。
我应该配置的规则怎么可能是文件的当前配置中的问题?
提前致谢。
您没有要求他在不显示包含内容的情况下将您带到小组。它必须是这样的:
这将使“www.myweb.com/panel”显示“www.myweb.com/includes/panel.php”。
您需要做的是将重定向规则分解为不同的步骤:
每个步骤在执行之前都会检查替换是否存在,以确保目标 PHP 脚本存在。
第一步检查具有请求名称的文件或目录是否存在,在这种情况下什么都不做(
-
delRewriteRule
)。第二步(只有在第一步失败时才会执行)通过添加来检查我们请求的 URL 是否存在
.php
。第三步也是最后一步(仅在不满足前两步的情况下才会执行)通过
includes
添加扩展名来检查子目录中的 URL 是否存在.php
。您必须多次重复最后一步,以隐藏子目录,但请记住,只有第一个匹配项才有效。
也就是说:如果您有一个文件
hola.php
和另一个文件,includes/hola.php
则只会提供第一个文件,而将屏蔽第二个文件。访问它的唯一方法是通过includes/hola
(match in the second step) 或includes/hola.php
(match in the first step)。