这是我目前拥有的 .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,R=301,NC]
但它不起作用。
谢谢!
答案 0 :(得分:2)
要将不存在的文件 /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]
答案 1 :(得分:2)
对于您显示的示例,请尝试遵循 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]