.htaccess htaccess-将目录重定向到同名文件

.htaccess htaccess-将目录重定向到同名文件,.htaccess,redirect,mod-rewrite,.htaccess,Redirect,Mod Rewrite,我似乎遇到了一个我找不到解决办法的问题 我设置了一个目录和一个同名文件,我似乎找不到一种方法将目录重定向到根文件夹中的文件。我找到的所有信息都是为了重写或重定向到子目录中的文件 目录:example.com/en-gb/ 文件:example.com/en-gb(使用htaccess删除扩展名) 当前htaccess(相关部分): 这只会导致以下错误: 您没有在此服务器上访问/en gb/.html的权限 有什么想法吗?这可能吗?通常,当您请求/directory时,mod_dir会发出301重

我似乎遇到了一个我找不到解决办法的问题

我设置了一个目录和一个同名文件,我似乎找不到一种方法将目录重定向到根文件夹中的文件。我找到的所有信息都是为了重写或重定向到子目录中的文件

目录:example.com/en-gb/


文件:example.com/en-gb(使用htaccess删除扩展名)

当前htaccess(相关部分):

这只会导致以下错误:

您没有在此服务器上访问/en gb/.html的权限


有什么想法吗?这可能吗?

通常,当您请求
/directory
时,mod_dir会发出301重定向,以附加一个尾部斜杠,即
/directory/
(以“修复”URL)。mod_dir随后能够从该目录中提供目录索引文档

不幸的是,这似乎发生在mod_rewrite能够处理请求之前。因此,您必须在
.htaccess
中禁用此行为:

DirectorySlash Off
然后,您可以在内部将请求重写为文件。例如,
/directory
在内部被重写为
/directory.html
,如果它存在:

RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^([^.]+)$ $1.html [L]
但是,禁用
DirectorySlash
有一个警告-您必须确保对目录的任何请求都已经有了后续斜杠(或者在
.htaccess
中检查此情况)。并注意文档中的安全警告

参考资料:

“使用htaccess删除扩展名”-那么文件是否有扩展名?大概是
en gb.html
?重写到实际文件的指令以及这些指令的顺序将非常重要-这些指令应该添加到您的问题中。只是澄清一下,您并没有使用
.htaccess
删除扩展名-是吗
.htaccess
用于重新添加扩展名(将URL转换回文件系统路径),而不是删除它。是的,我用错误的方式表达了自己。我使用它从url中删除扩展名,但当然它仍然存在于文件后面
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^([^.]+)$ $1.html [L]