Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache htaccess www子域重定向_Apache_.htaccess_Mod Rewrite_Redirect_Subdomain - Fatal编程技术网

Apache htaccess www子域重定向

Apache htaccess www子域重定向,apache,.htaccess,mod-rewrite,redirect,subdomain,Apache,.htaccess,Mod Rewrite,Redirect,Subdomain,我的问题 我有一个子域指向不同的服务器。服务器具有SSL,因此当用户在子域中键入时:https://my.maindomain.co它工作得很好。使用htaccess,我试图重定向所有键入以下网址的用户:https://www.my.maindomain.co或与正确版本()等效的http:// 我认为下面的方法可以很好地工作,但它不能: # rule for removing www on sub domains RewriteCond %{HTTP_HOST} ^www\.([^.]+\.m

我的问题

我有一个子域指向不同的服务器。服务器具有SSL,因此当用户在子域中键入时:
https://my.maindomain.co
它工作得很好。使用htaccess,我试图重定向所有键入以下网址的用户:
https://www.my.maindomain.co
或与正确版本()等效的
http://

我认为下面的方法可以很好地工作,但它不能:

# rule for removing www on sub domains
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.maindomain\.co)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
有人帮我吗


为了便于参考,我将此代码放在maindomain.co服务器上的htaccess中,该服务器托管在与my.maindomain.co不同的服务器上。您可以在托管子域的服务器上对子域使用此规则。它应该能满足你的需求

RewriteEngine On
RewriteCond %{HTTPS} !^on [OR]
RewriteCond %{HTTP_HOST} !^my\.example\.co$ [NC]
RewriteRule ^ https://my.example.co%{REQUEST_URI} [R=301,L]

注意:您必须拥有
www.my.example.co
有效ssl证书,如果他们输入
www.my.example.co
,此证书才能工作。否则它仍将处理重定向
http://my.example.co
https://my.example.co

首先,你所说的“它不起作用”是什么意思?如果您可以指定在尝试加载时发生的确切错误,这将非常有用

除此之外,我还可以想到另一个因素,如果您使用的是apache服务器,您可能希望在虚拟主机配置下的my.tutella.co

中添加“www.my.tutella.co”到ServerAlias

在子域的
.htaccess
中(或者,如果您有权访问Apache主配置,则比
.htaccess
文件更有效),您可以使用以下指令:

Redirect / https://my.example.co/

…这使用了
mod_别名
,比
mod_rewrite
等价物更容易理解和排除故障。

@anubhava没有应用其他重定向规则请参见更新的问题,我刚刚想到了这一点。它应该在子域服务器上而不是主域的服务器上吗?是的,它应该在子域服务器的htaccess中。你说的是:我应该把你的代码放在哪里,你认为我上面的代码应该放在子域服务器的htaccess上而不是主域的服务器上吗?是的,这是正确的。它必须位于为子域提供服务的服务器上。不是主域服务器,因为它没有指向那里。这实际上是不正确的。重定向是。对于他的完整需求,最好使用不难理解的mod_重写。他有几个要求,除了携带URI之外,还包括是否检查https。他用的东西是正确的。