apache - 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,R=301,NC]
但它不起作用。
谢谢!
解决方案
使用您显示的示例,请尝试遵循 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]
或者,如果您不仅要匹配 uri 中的任何 .txt 文件,那么请尝试遵循规则,请确保尝试上述规则集或一次仅遵循一个规则集。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/folder/$1\.php -f [NC]
RewriteRule ^folder/([^.]*)\.txt$ /folder/$1.php [NC,L]
推荐阅读
- javascript - 如何使用 getByDataFilter Sheets API v4 获取特定行数据
- asp.net - Docker API 应用程序,在 ASP.Net 中仅从 Visual Studio 成功构建,而不是像 git-bash/powershell 这样的控制台
- android - 在协程中使用 OkHTTPClient() 总是会抛出警告“调用了不适当的阻塞方法”
- r - 在 r 的数据框中添加多列包括 na
- python - 如何放置此框架顶部的标签?特金特
- java - 是否可以在不重新部署的情况下在 Camunda BPM 中“即时”更改自定义表单?
- python - 在 Pandas GroupBy 对象中减去两列
- wordpress - 代码星框架将元框添加到特定页面
- c# - 对 ASP.NET WebAPI 的 GraphQL 支持
- reactjs - Bitbucket 管道反应 mobx @inject 无法编译