我有一个处于测试版模式的网站,我也有一个LaunchRock页面设置。我需要进行设置,以便mydomain.com指向启动页面(signup.mydomain.com),但仍显示mydomain.com。但是,我仍然需要访问mydomain.com/beta才能访问测试版网站,而网站不会从当前目录移动。有没有办法通过Apache .htaccess Redirect实现这一点?
答案 0 :(得分:0)
mod_rewrite
文件放在文档根目录中(或者更好地将它放在apache配置文件或.htaccess
目录中, conf.d
希望成为你的朋友。您的安装有一个 - 如果您有写访问权限。)
RewriteEngine On
RewriteCond %{PATH_INFO} !^/beta
RewriteRule (.*) http://signup.mydomain.com/$1 [P]
它应该如何运作?
第一行激活重写(如果已经开启则可能不需要)。
下一行定义了一个条件:如果网址的路径以/beta
开头,请不要在下一行应用规则。 (^/beta
是正则表达式,前面的!
表示如果不匹配则应用。)
最后一行首先说匹配“所有内容”并将其发送到http://signup.mydomain.com/
,附加任何内容。[P]
说“代理”它,即apache本身将请求网址并将其获得的共鸣发送到浏览器,因此浏览器中的网址不会更改。
警告:只有在apache本身可以连接到http://signup.mydomain.com/
时才有效。这有时不起作用,特别是如果此域位于同一服务器上。
RTFM了解更多信息:http://httpd.apache.org/docs/2.4/rewrite/
答案 1 :(得分:0)
直到我看到克莱门斯关于代理的回答,我才能在没有实际重定向的情况下让自己的第一个要求自己工作,所以我已将其合并到这里。
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,只需将其更改为其他内容即可。