.htaccess 如何使用htaccess来响应同名文件夹或文件?

egdjgwm8  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(190)

我在我的/html目录中有这个:

.htaccess
info/
info/public.php 
info.php

htaccess文件:

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

info/public?format=json的一个应用程序调用
另一个应用程序呼叫info?format=json
我不知道如何使两个请求都得到响应,因为第二个请求返回404。

c3frrgcw

c3frrgcw1#

建议您在站点根目录.htaccess中用以下代码替换您的规则:

DirectorySlash Off
Options +FollowSymLinks -MultiViews -Indexes
RewriteEngine On

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

在这里:

  • RewriteCond %{DOCUMENT_ROOT}/$1.php -f:检查是否存在与$1值对应的.php文件。条件RewriteCond %{REQUEST_FILENAME} !-f仅检查请求是否不是针对文件。
  • Options +FollowSymLinks -MultiViews -Indexes:关闭选项MultiViews(内容协商)和Indexes(禁用目录列表)
  • DirectorySlash Off:避免将尾随的/添加到目录中,因为您将info/作为子目录,并且info.php也存在。

相关问题