通过 .htaccess 维护原始 URL 将子域重定向到目录

Redirecting a subdomain to a directory by maintainin original URL via .htaccess

我有一个子域 loja.meusite.com.br,我需要将流量重定向到 meusite。com/loja 维护原来的URLloja.meusite.com.br,通过htacces

我试过了。它重定向正确但不保持原来的 URL "loja.meusite.com.br".

我需要访问“meusite.com/loja”,在浏览器中保持URL“loja.meusite.com.br”

Options +FollowSymLinks
RewriteEngine on
Options +MultiViews

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{HTTP_HOST} ^loja.meusite.com.br$ [OR]
RewriteCond %{HTTP_HOST} ^www.loja.meusite.com.br$
RewriteRule (.*)$ http://www.meusite.com/loja [R=301,L]

好的,这意味着您有两个选择:1. 您可以使用内部反向代理或 2. 您可以简单地设置目标 http 主机(“域”),使其与其他主机共享物理文件系统主机。或者在文件系统中使用符号 link 映射两者。如前所述,第一个选项意味着性能损失,第二个选项取决于您实际拥有的环境,因此您对运行 http 服务器的系统的控制程度。


1:使用代理模块(再次注意:需要加载和启用代理模块和代理 http 模块,典型的廉价托管服务提供商不会出现这种情况):

您可以在实际的 http 服务器的主机配置中直接使用代理模块:

ProxyRequests off
ProxyPass / http://www.meusite.com/loja/
ProxyPassReverse / http://www.meusite.com/loja/

或者你使用重写模块中嵌入的代理模块:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)loja\.meusite\.com\.br$
RewriteRule ^ http://www.meusite.com/loja%{REQUEST_URI} [P]

2:您可以设置 http 主机“loja.meusite.com.br”和“www.loja.meusite.com.br”(可能是前者的“ServerAlias”)的 DOCUMENT_ROOT,这样它在文件系统中包含一个 symlink,它指向 http 主机“www.meusite.com”的 DOCUMENT_ROOT。根据您在该主机中实现的实际逻辑,这可能已经足够了。

优点:您不需要对每个传入请求进行第二次内部 http 请求。但是您需要弄清楚您的应用程序逻辑是否与这些请求一致...