伪造htaccess目录中的扩展名

时间:2018-09-18 21:44:09

标签: php json .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

我该怎么做?

1 个答案:

答案 0 :(得分:2)

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

RewriteEngine on

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

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