【问题标题】:How to redirect port to directory or subdomain with .htaccess?如何使用 .htaccess 将端口重定向到目录或子域?
【发布时间】:2024-01-17 18:46:01
【问题描述】:

如何使用 .htaccess 将我的目录:/panel 或子域:panel.domain.com 重定向到端口 8083?

例如,当有人访问 panel.domain.com 时,它与访问 domain.com:8083 是一样的。

我已经尝试了许多 .htaccess 配置,但在我的场景中似乎都没有。

这是我的 .htaccess 文件:

Options +Indexes
RewriteEngine on
Redirect 301 /index.html /index.php

RewriteCond %{HTTP_HOST} ^panel.cdghost.xyz$
RewriteRule ^(.*)$ cdghost.xyz:8083/$1 [L,R=302]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^((?!builder/).*)$ https://www.cdghost.xyz/$1 [R,L]
ErrorDocument 400 /400.html
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 503 /503.html
ErrorDocument 504 /504.html

谢谢!

【问题讨论】:

    标签: .htaccess redirect port subdomain


    【解决方案1】:

    试试这个:

    RewriteEngine On
    RewriteCond %{SERVER_PORT} ^8083$
    RewriteRule ^(.*)$ panel.domain.com/$1 [L,R=302]
    
    #domain.com:8083 => panel.domain.com
    #domain.com:8083/something => panel.domain.com/something
    

    或者反过来:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^panel.domain.com$
    RewriteRule ^(.*)$ domain.com:8083/$1 [L,R=302]
    
    #panel.domain.com => domain.com:8083
    #panel.domain.com/something => domain.com:8083/something 
    

    记得开启模组重写功能:

    sudo a2enmod rewrite
    sudo service apache2 restart
    

    【讨论】:

    • 我被告知“DNS 查找失败”
    • 但是重定向确实有效?您进入 mysite.com:8083 并将您重定向到 panel.mysite.com?
    • 我想我把问题描述错了,我希望 panel.domain.com 是 8083 端口的 302,所以当有人访问 panel.domain.com 时,它与访问 domain.com 相同: 8083.
    • 如果你想要一个 302 重定向,这就是我刚刚做的,如果你想要 panel.comin.com 重定向 302 到 domain.com,domain.com:8083 302 重定向到 panel.domain.com :8083 告诉我,我用规则编辑答案。
    • 立即查看。这一切都在我的服务器上进行了测试和工作。