.htaccess 将域重定向到启动页面并通过/beta扩展访问站点

.htaccess 将域重定向到启动页面并通过/beta扩展访问站点,.htaccess,redirect,dns,subdomain,launch,.htaccess,Redirect,Dns,Subdomain,Launch,我有一个网站,是在测试模式,我也有一个LaunchRock页面设置。我需要设置它,以便mydomain.com指向启动页面(signup.mydomain.com),但仍然显示mydomain.com。但是我仍然需要通过访问mydomain.com/beta来访问beta站点,而不需要将站点从当前目录中移出。有没有办法通过Apache.htaccess重定向实现这一点?mod_rewrite希望在这里成为您的朋友,如果您将以下.htaccess文件放在文档根目录中(或者最好将其放在apache配

我有一个网站,是在测试模式,我也有一个LaunchRock页面设置。我需要设置它,以便mydomain.com指向启动页面(signup.mydomain.com),但仍然显示mydomain.com。但是我仍然需要通过访问mydomain.com/beta来访问beta站点,而不需要将站点从当前目录中移出。有没有办法通过Apache.htaccess重定向实现这一点?

mod_rewrite
希望在这里成为您的朋友,如果您将以下
.htaccess
文件放在文档根目录中(或者最好将其放在apache配置文件中,或者如果您的安装具有写入权限,则将其放在
conf.d
目录中)

它应该如何工作

第一行激活重写(如果已启用,则可能不需要)

下一行定义了一个条件:如果url的路径以
/beta
开头,则不要在下一行应用规则。(
^/beta
是正则表达式,它前面的
表示如果不匹配就应用。)

最后一行首先表示匹配输入的“所有内容”,并将其发送到
http://signup.mydomain.com/
,附加任何内容。
[P]
表示“代理”它,即apache本身将请求url并将其获得的响应发送到浏览器,因此浏览器中的url不会更改

警告:只有apache本身可以连接到
http://signup.mydomain.com/
。这有时不起作用,尤其是当此域位于同一服务器上时


RTFM获取更多信息:

在我看到克莱门斯关于代理的回答之前,我无法亲自满足您的第一个需求,因此我将其合并到这里

RewriteEngine On

#Redirect to signup.mydomain.com if not requesting /beta
RewriteCond %{REQUEST_URI} !^/beta(/|$)
RewriteCond %{QUERY_STRING} !beta=true
RewriteRule (.*) http://signup.mydomain.com/$1 [P]

#Strip /beta and append beta=true query string
RewriteCond %{REQUEST_URI} ^/beta
RewriteRule beta(.*) $1?beta=true [QSA]
这基本上从您的查询中去掉/beta,并将beta=true查询附加到您的查询字符串中。然后,它会在第二次到第二次检查此新查询字符串

如果您在程序中的某个地方使用beta=true,只需将其更改为其他内容即可

RewriteEngine On

#Redirect to signup.mydomain.com if not requesting /beta
RewriteCond %{REQUEST_URI} !^/beta(/|$)
RewriteCond %{QUERY_STRING} !beta=true
RewriteRule (.*) http://signup.mydomain.com/$1 [P]

#Strip /beta and append beta=true query string
RewriteCond %{REQUEST_URI} ^/beta
RewriteRule beta(.*) $1?beta=true [QSA]