如何使用 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 将带有哈希字符的路径转换为查询字符串