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