Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何在隐藏扩展名时忽略与文件同名的目录_Apache_.htaccess_Mod Rewrite_Ubuntu_Apache2.4 - Fatal编程技术网

Apache 如何在隐藏扩展名时忽略与文件同名的目录

Apache 如何在隐藏扩展名时忽略与文件同名的目录,apache,.htaccess,mod-rewrite,ubuntu,apache2.4,Apache,.htaccess,Mod Rewrite,Ubuntu,Apache2.4,我有一个目录和一个同名文件,例如: foo.html 福/ 我的.htaccess文件设置为在地址栏中隐藏文件扩展名,因此当我请求www.example.com/foo时,它应该显示foo.html文件。但是,由于有一个同名的目录,因此不显示foo.html文件,而是显示该目录,如www.examplecom/foo/ 如何确保文件优先于同名目录?我在谷歌上搜索了几个小时,还没有找到有效的解决方案。我尝试过禁用DirectorySlash,但没有成功 我的.htaccess文件: Rewrite

我有一个目录和一个同名文件,例如:

foo.html

福/

我的.htaccess文件设置为在地址栏中隐藏文件扩展名,因此当我请求www.example.com/foo时,它应该显示foo.html文件。但是,由于有一个同名的目录,因此不显示foo.html文件,而是显示该目录,如www.examplecom/foo/

如何确保文件优先于同名目录?我在谷歌上搜索了几个小时,还没有找到有效的解决方案。我尝试过禁用DirectorySlash,但没有成功

我的.htaccess文件:

RewriteEngine On
DirectorySlash Off

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

运行Apache/2.4.7(Ubuntu)服务器将您的规则替换为:

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC]
RewriteRule ^(.+?)/?$ /$1.html [L]

你也不需要
目录斜杠
行。

我喜欢你在
RewriteCond
-精通语法中所做的,+1:)谢谢你的回复,我已经按照你说的做了,但不幸的是我得到了同样的结果,事实上现在我的URL都没有工作,也许某个地方有一个小错误?这些规则中没有错误,但其他规则可能冲突。你能在你的问题中发布你完整的.htaccess吗?这样我就可以调查了。我实际上只是在使用我的apache2.conf文件,而不是.htaccess
选项下面的ymlinks AllowOverride无需在RewriteCond%{DOCUMENT\u ROOT}/$1\.html-f[NC]RewriteRule^(.+?)/?$/$1.html[L]
出于测试目的,将这些规则放在
DocumentRoot/.htaccess
中,而不是放在Apache配置中。如果尚未启用,则可能需要启用
.htaccess