gpt4 book ai didi

apache - 将通配符子域重定向到子目录,而不更改地址栏中的 URL

转载 作者:行者123 更新时间:2023-12-01 07:14:29 24 4
gpt4 key购买 nike

我在这里阅读了很多关于此的问题和答案,但似乎没有一个可以解决我的具体问题。

我想将任何子域重定向到要匹配的子目录。

所以:x.domain.com 会转到 domain.com/x,y.domain.com 会转到 domain.com/y - 但我想在地址栏中的 URL 不更改的情况下执行此操作。

这是我到目前为止所拥有的:

    Options +FollowSymLinks 

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} !^(www)\. [NC]

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com [NC]

RewriteRule ^ /%1 [P,L]

但这将我带到一个网站重定向循环,URL 栏中的地址不正确,子域仍然存在。

例如,x.domain.com 将我带到 x.domain.com/x,我收到重定向循环错误。

如果有人能指出我正确的方向,我将不胜感激!我所做的任何更改似乎都不起作用...

最佳答案

首先,确保 apache 配置中的 vhost 配置正确,并且 domain.com 的所有子域都在同一个主机配置中(通配符):

<VirtualHost *:80>
ServerName domain.com
ServerAlias *.domain.com
...

您可以使用以下 htaccess 配置进行重定向:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ http://domain.com/%1/$1 [L,NC,QSA]

现在,如果您打开 asd.domain.com,它应该会将您重定向到 domain.com/asd。
您仍然会遇到问题,重定向在 URL 地址栏中可见。为了防止这种情况,请在您的服务器上启用 mod_proxy(并加载子模块)并将“L”标志与“P”标志交换:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ http://domain.com/%1/$1 [P,NC,QSA]

如果这不起作用,查看 vhost 配置和子域调用的 error.log 内容会有所帮助!

引用:
.htaccess rewrite subdomain to directory
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_p

关于apache - 将通配符子域重定向到子目录,而不更改地址栏中的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com