【问题标题】:Apache mod_rewrite and hide source file simultaneouslyApache mod_rewrite 并同时隐藏源文件
【发布时间】:2017-08-25 19:07:57
【问题描述】:

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

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

如何防止消费者直接访问/services.html(如果他们四处寻找)并让他们收到 404 HTTP 响应?我确实希望任何消费者知道我有一个 services.html 文件,其中包括发送与原始 /services 资源相关联的 302 响应。

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

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

【问题讨论】:

  • 如果您投了反对票,您介意分享原因吗?据我了解您的问题,您想调用 /services 并从 DocumentRoot 获取 services.html 但不希望 URL/URI 更改...[P] 这样做。
  • @HelloFishy 否决票不是我投的。

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


【解决方案1】:

首先“隐藏”您的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2011-04-02
    • 2010-12-31
    • 1970-01-01
    • 2015-04-06
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多