【问题标题】:Rewriting sub-domain leads to a HTTP redirect rather重写子域会导致 HTTP 重定向而不是
【发布时间】:2018-07-24 21:05:48
【问题描述】:

我在这里要做的是将我的https://demo.example.com/ 子域重写为我的https://example.com/ 域(在另一个文件夹中),而不更改 URL。但是,子域不断将我重定向到该文件夹​​。我不擅长 HTACCESS 和重写,但是这应该是一件容易的事。

这是我当前的 HTACCESS 文件:

RewriteEngine On

RewriteRule ^license/?(.*)$ /sites/site-licenses/$1.php [L]
RewriteRule ^portfolio/?(.*)$ /sites/site-portfolios/$1.php [L]

RewriteCond %{HTTP_HOST} ^demo\.hamiltondev\.net
RewriteRule ^(.*)$ https://hamiltondev.net/sites/site-demos/$1 [L,NC,QSA]

前两个重写规则是针对主域https://example.com/license/---https://example.com/portfolio/---

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    当一个完整的 url 被用作 RewriteRule 中的目标时,它会自动变成一个重定向。您需要的是使用绝对路径(如果演示和主域共享相同的文档根文件夹)或使用代理请求。

    两个域共享文档根文件夹

    RewriteCond %{HTTP_HOST} ^demo\.hamiltondev\.net$ [NC]
    RewriteRule ^(.*)$ /sites/site-demos/$1 [L,NC,QSA]
    

    否则,代理

    RewriteCond %{HTTP_HOST} ^demo\.hamiltondev\.net$ [NC]
    RewriteRule ^(.*)$ https://hamiltondev.net/sites/site-demos/$1 [P,NC,QSA]
    

    【讨论】:

    • 所提供的示例都不适合我,收到 500 HTTP 错误。将检查日志的内容。
    • AH01144: No protocol handler was valid for the URL /index.php (scheme 'https'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
    • 这是使用第二条规则/可能性时的错误。您需要启用mod_proxy。但是,再次阅读您的问题,我很确定第一个解决方案在您的情况下会很好(而且,它也更快)
    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 2020-12-28
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多