Apache mod_rewrite并同时隐藏源文件

时间:2017-03-31 13:25:11

标签: .htaccess mod-rewrite url-rewriting apache2

我在共享托管服务上有一个本地.htaccess文件,其中包含一个单独的重写规则,用于将/services映射到文档根目录中的文件services.html

RewriteEngine On
RewriteBase /
RewriteRule ^services$ services.html [L]

如何阻止消费者直接访问/services.html(如果他们嗅到它)并让他们收到404 HTTP响应?我希望任何消费者都知道我有一个services.html文件,其中包括发送302个与原始/services资源绑定的响应。

但是,我尝试设置规则以返回/services.html的404,但这导致/services也返回404。

总之,我希望消费者只能看到/services端点(200 OK)并且永远不知道它背后的映射,或绕过公开选择的端点(services.html返回404 Not Found )。

1 个答案:

答案 0 :(得分:0)

首先“隐藏”您的services.html并使用[P]参数代理请求。

RewriteEngine On
RewriteBase /
RewriteRule ^/services$ http://yourdomain.com/<path-to-the-file>/services.html [P,L]

收到http://yourdomain.com/services之类的请求并返回http://yourdomain.com/ / services.html而不显示用户来自哪里,浏览器仍会显示/ services