【问题标题】:Redirecting a subdomain to a directory by maintainin original URL via .htaccess通过 .htaccess 维护原始 URL 将子域重定向到目录
【发布时间】:2021-06-15 23:39:20
【问题描述】:

我有一个子域 loja.meusite.com.br,我需要将流量重定向到 meusite.com/loja 维护原始 URL loja.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$1 [R=301,L]

【问题讨论】:

  • 您能分享一下您的尝试吗?
  • 您还需要告诉我们有关您的设置的更多详细信息... 两个主机是否来自同一个系统?或者他们是分开的?您是否可以控制加载到您的 http 服务器中的模块?哪些模块可用
  • "保持原来的URL loja.meusite.com.br" - 保持原来的URL-path?
  • @AmitVerma 我添加了详细信息
  • @arkascha 所有模块都可用,它是重定向到同一个系统

标签: .htaccess subdomain


【解决方案1】:

好的,这意味着您有两个选择:1. 您可以使用内部反向代理或 2. 您可以简单地设置目标 http 主机(“域”),使其与其他主机共享物理文件系统。或者使用文件系统中的符号链接映射两者。如前所述,第一个选项意味着性能损失,第二个取决于您实际拥有的环境,因此您对运行 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,这样它在文件系统中包含一个符号链接,它指向 http 主机“www.meusite.com”的DOCUMENT_ROOT。根据您在该主机中实现的实际逻辑,这可能已经足够了。

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

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多