gpt4 book ai didi

.htaccess - 从 htaccess 中的目录中删除尾部斜杠

转载 作者:行者123 更新时间:2023-12-04 17:01:29 26 4
gpt4 key购买 nike

以下是我的目录结构

Root/
index.php
contact.php
projects.php
/index.php
/project1.php
/project2.php

我已经重写以从所有文件名中删除 .php 扩展名。它工作得很好,我可以访问 www.website.com/projects/project2.php来自 www.website.com/projects/project2
我也希望能够访问 www.website.com/projects/index.phpwww.website.com/projects
我设法编写了一个规则,将 url 重写为 www.website.com/projects/当我输入 www.website.com/projects
但是,我无法摆脱最后一个斜杠。

请注意,我对此并不十分了解。大部分是我在网上找到的。我环顾四周,但直到现在还没有任何工作。

这是代码:
Options +FollowSymLinks -MultiViews

RewriteEngine on

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

RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^projects$ /projects/index.php [L,E=LOOP:1]

最佳答案

这是由 mod_dir and the DirectorySlash directive 引起的.它将自动对缺少尾部斜杠的目录进行 301 重定向请求。这修复了信息泄露安全问题(在上面的链接中描述),即使存在索引文件(例如 index.php )也会列出目录内容。因此,如果您关闭此功能,请非常小心您的目录。如果您关闭了目录索引,那么就不必担心。

您可以使用以下方法关闭目录斜杠:

DirectorySlash Off

您可以使用选项关闭目录索引:
Options -Indexes

然后,你需要让你的项目规则 之前 您的 php 扩展规则:
Options +FollowSymLinks -MultiViews -Indexes

DirectorySlash Off

RewriteEngine on

RewriteRule ^projects$ /projects/index.php [L,E=LOOP:1]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

关于.htaccess - 从 htaccess 中的目录中删除尾部斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com