我想使用以下网址:
my-domain.com/urlname
并在我的网站空间中有一个与 url 同名的目录。
在我的 htaccess 中,我有以下 RewriteRule
RewriteRule ^urlname$ landingpage.php [L,QSA]
一旦我将一个具有相同名称“urlname”的文件夹添加到我的网络空间中,我就无法再使用浏览器打开该网址。当文件夹“urlname”存在时,Chrome 会自动在 url 中添加尾部斜杠并显示“禁止访问!”。
是否可以有一个与文件夹同名的url(确实存在,不使用htaccess):
my-domain.com/urlname
my-domain.com/urlname/
当文件夹“urlname”存在时,Chrome 会自动在 url 后面添加一个斜杠并显示“禁止访问!”
这是因为您的 Web 服务器 (Apache) 上有 2 个配置。
mod_dir
在 mod_rewrite
模块之前运行,并在请求与现有目录匹配时检查尾随斜杠。如果缺少尾随 /
,则它会通过添加尾随 301
来执行 /
重定向。403
是由于 Apache 配置中或同一 .htaccess 中某处存在(推荐)Options -Indexes
,当不存在索引文件时,它会禁用目录列表。这是根据安全建议。如果您想以最小的改变使其全部工作,请使用:
RewriteRule ^urlname/?$ landingpage.php [L,NC]
记下与 URI
/
匹配的尾随 urlname/
。
请注意,如果您先将 URL 作为
301
输入到 /urlname
,您仍然会获得 /urlname/
重定向,然后它将显示来自 landingpage.php
的内容。
我删除了不需要的标志
QSA
并添加了 NC
(忽略大小写)标志。