Apache .htaccess 将不存在的文件映射到脚本

这是我目前拥有的 .htaccess 文件:

Options -Indexes
AddDefaultCharset utf-8
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
<Files ".ht*">
    Require all granted
</Files>
RewriteEngine on
RewriteRule ^error\.html$ / [R=301]
RewriteRule ^\.ht / [L,R=301,NC]

我需要添加一个特定的规则来将一个不存在的文件映射到一个脚本,就像这样:

RewriteRule /folder/file.txt /folder/file.php [L]

如何将此规则添加到 .htaccess 中?

我试过了:

Options -Indexes
AddDefaultCharset utf-8
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
<Files ".ht*">
    Require all granted
</Files>
RewriteEngine on

RewriteCond "%{REDIRECT_URL}" "/folder/file.txt"
RewriteRule ^error\.html$ /folder/file.php [L]

RewriteRule ^error\.html$ / [R=301]
RewriteRule ^\.ht / [L,NC]

但它不起作用。

谢谢!

meihaoyong 回答:Apache .htaccess 将不存在的文件映射到脚本

要将不存在的文件 /folder/file.txt 映射到 /folder/file.php,您可以使用以下命令:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^folder/file\.txt$ /folder/file.php [L]

这是将所有 .txt 文件重写为 .php

的通用规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)\.tx$ /$1.php [L]
,

对于您显示的示例,请尝试遵循 htaccess 规则文件。确保将您的 htaccess 文件保存在根目录中。

在测试您的 URL 之前,还要确保清除浏览器缓存。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/folder/file\.php -f [NC]
RewriteRule ^folder/file\.txt$ /folder/file.php [NC,L]


OR 如果您想匹配 uri 中的任何 .txt 而不仅仅是 file.txt 然后尝试以下规则,请确保尝试以上规则集或以下规则集仅一次。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/folder/$1\.php -f [NC]
RewriteRule ^folder/([^.]*)\.txt$ /folder/$1.php [NC,L]
本文链接:https://www.f2er.com/246.html

大家都在问