php - 使用 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
我怎样才能做到这一点?
解决方案
在同一个 .htaccess 中有另一个重定向规则:
RewriteEngine on
RewriteCond %{THE_REQUEST} (/.+?)\.php[\s?] [NC]
RewriteRule ^ %1.json [R=301,NE,L]
RewriteRule ^(.+)\.json$ $1.php [L,NC]
推荐阅读
- c# - 带有 TextBox 的 CheckedListBox 过滤器
- linux - Bash 脚本 For Loop 包含 if/else 问题
- python - python,字典如何获取第一个键的第一个值
- c++ - 关于 std::hash 实现的公平假设
- javascript - 在 gupshup 中使用 context.sendResponse 时的轮询问题
- sql - 从oracle中的给定字母生成下一个字母序列
- php - 作曲家在 https: in url 之后删除第二个斜杠
- android - 通过 adb 连接与安卓应用交互
- python - 添加地图 matplotlib 的放大部分的插入
- kernel - 在内核 dts 的保留内存节点中指定 u-boot