首页 > 解决方案 > .htaccess 重写子域保留原始 url

问题描述

我正在编写一个 .htaccess 规则,它将子域请求发送到特定的登录页面文件。我目前的规则是:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^subdomain.name.com$
RewriteRule ^ https://name.com/app/login [R=302,L,NE]

这如我所料。我现在想以此为基础,以保持显示原始网址。RewriteRule 将继续重定向到https://name.com/app/login,但仍将https://subdomain.name.com显示为 Web 浏览器中的 URL。

这可能在 .htacess 文件中吗?我找不到解决方案。

标签: .htaccesszend-framework

解决方案


你可以使用:

RewriteCond %{HTTP_HOST} ^subdomain.name.com$
RewriteRule ^ https://name.com/app/login [P]

为此,您需要

1)启用apache代理模块

2)在VirtualHost 定义中启用SSLProxyEngine

<VirtualHost subdomain.name.com:80>
    ...
    SSLProxyEngine on
</VirtualHost>

<VirtualHost subdomain.name.com:443>
    ...
    SSLProxyEngine on
</VirtualHost>

3)如果证书不是“受信任的”,例如是自签名的,您可以通过添加以下内容来禁用代理的验证:

SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

到上面的 virtualHost 定义。

参考


推荐阅读