避免指向文件夹

时间:2015-07-30 14:36:09

标签: apache .htaccess mod-rewrite

我想将网址/login重写为/login/login.php。我已使用规则.htaccess/login中创建了RewriteRule ^$ login.php [L,NC,QSA]个文件。这很好用,但浏览器中的网址变为/login/(请注意我不想要的尾随斜杠。)

我认为原因是打开文件夹/login以查找.htaccess文件,并在文件夹中添加尾部斜杠(?)

为避免这种情况,我在.htaccess中使用规则/创建了RewriteRule ^login$ login/login.php [L,NC,QSA]文件。这不起作用。浏览器中的网址仍为/login/,我收到403 Forbidden:“您无权访问此服务器上的/ login /。”

接下来,我将规则(.htaccess文件仍在/)更改为RewriteRule ^login login/login.php [L,NC,QSA]。现在它再次起作用,但浏览器中的网址仍然是/login/

当网址指向某个文件夹时,如何删除尾部斜杠(或阻止其出现)?

1 个答案:

答案 0 :(得分:1)

由于login是一个目录,因此有一个名为" mod_dir"的模块。当对缺少尾部斜杠的目录发出请求时启动。它会自动重定向请求以包含尾部斜杠,它会在mod_rewrite处理请求之前执行此操作。

您可以使用DirectorySlash Off指令关闭此功能,但当您关闭此选项时会出现严重信息泄露问题,即使有相关内容也可以查看目录内容默认索引。您可以通过关闭索引来解决这个问题,但这只会返回403禁止。

因此,在文档根目录中的htaccess文件中,您可以尝试添加:

Options -Indexes
DirecrtorySlash Off

RewriteEngine On
RewriteRule ^login$ login/login.php [L,NC,QSA]