如果站点托管在不同的服务器上或不共享公共文档根目录,那么您将不得不依赖 mod_proxy 并且可以使用P
重写规则标志。例如,在www.example.com
的文档根目录中的 htaccess 文件中的这些规则:
RewriteCond %{HTTP_HOST} ([^.]+)\.com$ [NC]
RewriteRule ^/?$ http://www.sample.com/default.php?from=%1 [L,P]
将接受请求http://www.example.com/
并无形地将其代理到http://www.sample.com/default.php?from=example
. 浏览器的 URL 地址栏将保持不变http://www.example.com/
。
请注意,该规则仅与请求 URI 匹配/
。如果你想做更多,你必须创建正确的正则表达式和分组。
如果您在 sample.com 站点上有重定向,则需要使用ProxyPassReverse
重写重定向。另请查看ProxyPassReverseCookieDomain
是否ProxyPassReverseCookiePath
涉及 cookie。
如果您可以在 vhost 或服务器配置中执行此操作,那么请考虑简单地使用ProxyPass
而不是 mod_rewrite。该ProxyPass
指令在 htaccess 文件中不起作用。
编辑:
看到所有内容都在同一个文档根目录中,您不需要代理任何内容。简单地:
RewriteCond %{HTTP_HOST} !^www\.sample\.com$ [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.com$ [NC]
RewriteRule ^/?$ /default.php?from=%1 [L]