首页 > 解决方案 > 使用 htaccess 伪造目录中的扩展名

问题描述

我需要一个目录中的所有php文件及其所有子目录都是json。这样当我找到带有 json 扩展名的文件时,我就会得到 php 文件。

例子:

/assets/json/file.php      >>> /assets/json/file.json
/assets/json/user/list.php >>> /assets/json/user/list.json

我可以通过使用以下规则.htaccess在目录中添加一个文件来部分实现这一点:/assets/json

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.json$ $1\.php [L]

通过这些规则,我可以在访问 json 文件时看到 php 内容。但是我不希望 php 文件不再可见,所以我需要添加一个重定向,这样当用户键入 php 时,它将被重定向到 json 文件(不存在)

如果我添加R=301浏览器会将我重定向到http://localhost/home/localhost/public_html/assets/json/user/list.php而不是http://localhost/assets/json/user/list.json

我怎样才能做到这一点?

标签: phpjson.htaccess

解决方案


在同一个 .htaccess 中有另一个重定向规则:

RewriteEngine on

RewriteCond %{THE_REQUEST} (/.+?)\.php[\s?] [NC]
RewriteRule ^ %1.json [R=301,NE,L]

RewriteRule ^(.+)\.json$ $1.php [L,NC]

推荐阅读