如何使用 mod_rewrite 伪造路径?基本上如何使用 mod_rewrite 在特定的 url 路径上提供平面文件?

Posted

技术标签:

【中文标题】如何使用 mod_rewrite 伪造路径?基本上如何使用 mod_rewrite 在特定的 url 路径上提供平面文件?【英文标题】:How to fake a path with mod_rewrite? Basically how to serve a flat file on a specific url path using mod_rewrite? 【发布时间】:2015-05-06 02:32:24 【问题描述】:

自从我使用 mod_rewrite 以来已经有一段时间了,所以我希望有人能快速阐明这一点。

基本上,我有一个扁平的动态 php 文件,称之为 myForm.php。每当在路径 h.t.t.tp://mydomain.com/mylong/uri/contact/path 的域上发出请求时,我都需要提供此文件。如果用户去那个位置,我需要我的 apache 服务器来提供 myForm.php 文件,这当然应该让用户不知道。他们仍然会看到 /mylong/uri/contact/path 作为他们的位置地址,但所提供的文件来自 webroot 文件夹或其他位置,名为 myForm.php .

这很容易使用 mod_rewrite 对吗?

类似:

RewriteEngine  on
RewriteRule    ^/mylong/uri/contact/path$  /myForm.php [PT]

这行得通吗?取自: http://httpd.apache.org/docs/trunk/rewrite/remapping.html

提前感谢任何可以确认并提供出色答案的人!

【问题讨论】:

【参考方案1】:

RewriteRule中删除前导斜杠:

RewriteEngine  on
RewriteRule ^mylong/uri/contact/path/?$ /myForm.php [L,NC]

.htaccess 是每个目录指令,Apache 从 RewriteRule URI 模式中去除当前目录路径(因此是前导斜杠)。

【讨论】:

以上是关于如何使用 mod_rewrite 伪造路径?基本上如何使用 mod_rewrite 在特定的 url 路径上提供平面文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 时如何使 mod_rewrite *not* 执行主目录扩展

使用 Mod_Rewrite 将 ROOT 重写到另一个路径

使用 mod_rewrite 将带有哈希字符的路径转换为查询字符串

在Apache中使用mod_rewrite模块重写URL

mod_rewrite:将路径和查询字符串 URL 作为参数传递

相对路径 css/js 的 mod_rewrite 问题