对于移动子域名(m.domain)我只是尝试从公共主域图像文件夹(www.domain.com/images)中提取图像
经过一些修补,我显然已经获得了htaccess重写代码才能成功运行但我发现我无法在重写时使用P标志,并且由于共享托管我没有启用mod_proxy。
我的m.domain.com htaccess文件中的简单代码:
RewriteRule ^(images/.*) http://www.domain.com/$1 [L]
不使用P标志我没有收到什么好处?有什么区别?
答案 0 :(得分:1)
当您代理请求时,服务器本身会执行外部请求并传递它接收的数据。如果客户端请求http://m.example.com/asdf
,并且服务器将代理http://www.example.com/asdf
,则服务器将向该URL发出代理请求,然后将http://m.example.com/asdf
的数据返回给客户端。对于外部世界,http://m.example.com/asdf
和http://www.example.com/asdf
上存在重复内容,并且请求两个网址的任何客户端都会将内容缓存两次。这不太理想。
使用您当前的方法,您可以进行隐式临时重定向。当客户端请求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]
标记使用外部重定向。