.htaccess 文件访问特定文件的问题

.htaccess file accessing issue to a specific file

=> This is my folder structure

有一个文件当前名称deploy_email.php

这是我的 .htaccess 代码

<IfModule mod_rewrite.c>
RewriteEngine on
AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm

RewriteCond %{THE_REQUEST} ^[A-Z](3,)\s([^.]+)\.php [NC]
RewriteRule ^%1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ .php [NC,L]
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?/] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]
</IfModule>

问题是我希望 deploy_email.php 文件可以通过扩展名访问,其余文件扩展名应该被隐藏。

如果我在检查时使用上面的 .htaccess 代码,我发现数据不是通过 deploy_mail.php 获取的,正如您在此处看到的那样 => This here

请提供一些解决方案。

POST 数据在使用 R 标志进行外部重定向时丢失。您应该跳过来自重定向规则的所有 POST 个请求,而不仅仅是一个文件。

将显示的所有代码替换

RewriteEngine on

AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm

# redirect only all requests except POST
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(?:php|html?)[\s?/] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

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

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ .html [L]

RewriteCond %{REQUEST_FILENAME}.htm -f
RewriteRule ^(.+?)/?$ .htm [L]

清除浏览器缓存并重新测试。