【问题标题】:If mod_proxy is unavailable, what is the effect of not using the P flag in an htaccess rewrite?如果 mod_proxy 不可用,在 htaccess 重写中不使用 P 标志有什么影响?
【发布时间】:2015-06-24 23:09:06
【问题描述】:

对于移动子域 (m.domain),我只是尝试从公共主域图像文件夹 (www.domain.com/images) 中提取图像

经过一番修改,我显然已经让 htaccess 重写代码成功运行,但我发现我无法在重写时使用 P 标志,并且由于共享托管,我没有启用 mod_proxy。

我的 m.domain.com htaccess 文件中的简单代码:

RewriteRule ^(images/.*) http://www.domain.com/$1 [L]

不使用 P 标志我没有得到什么好处?有什么区别?

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting subdomain mod-proxy


    【解决方案1】:

    当您代理请求时,服务器本身会执行外部请求并传递它接收到的数据。如果客户端请求http://m.example.com/asdf,而服务器将代理到http://www.example.com/asdf,则服务器将对那个url 发出代理请求,然后将http://m.example.com/asdf 的数据返回给客户端。对于外部世界,http://m.example.com/asdfhttp://www.example.com/asdf 上有重复的内容,任何请求这两个 url 的客户端都会缓存两次。这并不理想。

    使用您当前的方法,您可以进行隐式临时重定向。当客户端请求http://m.example.com/asdf 时,服务器发回重定向响应,告诉客户端在http://www.example.com/asdf 上重试。客户端再次尝试该 url,并从服务器接收数据。对于外界来说,很明显内容在一个地方,缓存数据时只会缓存http://www.example.com/asdf。如果您将重定向永久化,在某些情况下它会跳过重定向并直接请求http://www.example.com/asdf,从而减少您服务器的负载。

    除非您有充分的理由代理请求(例如,因为带有数据的服务器仅在本地可用),否则您不应使用代理请求。如果http://m.example.com/http://www.example.com 托管在同一台服务器上,并且您不关心托管重复内容,那么您应该使用内部重写。如果您担心重复的内容,您可以使用外部重定向,使用 [R] 标志。

    【讨论】:

    • 那么,如果我既不使用 [P] 也不使用 [R] 标志,而是使用 [L] 标志,这意味着什么?另外,我只是从 www 服务器中提取图像,而不是完整的页面或文本内容。我不想创建重复的内容。这些都在同一个物理服务器上。我不能使用 [P] 标志,也不能使用 mod_proxy,所以这不是一个真正的选择......我只是想确保这样做不会造成任何不良的、意想不到的结果。
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多