我想将网址/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/
。
当网址指向某个文件夹时,如何删除尾部斜杠(或阻止其出现)?
答案 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]