如何将根域重定向到子文件夹(使用https),将其余的addon域重定向到子文件夹(不使用https)

时间:2016-04-09 15:33:21

标签: .htaccess http redirect https subdirectory

如何将根域重定向到子文件夹(使用HTTPS),将其他其他插件域重定向到子文件夹(不使用HTTPS)。

目前我在root中有.htaccess,使用HTTPS重定向到the-main-subfolder确定。但我的其他插件域名domain2也会被重定向到the-main-subfolder

我想将domain2重定向到the-domain2-subfolder 而不使用HTTPS

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RedirectMatch ^/$ /the-main-subfolder/

我不确定这段代码是否正确,因为它可能是我使用通配符。我从网上搜索得到了这个代码,但有很多建议我现在很困惑!

总结:当用户在浏览器中的domain1.co.uk中输入并且我的插件域https://www.domain1.co.uk/the-main-subfolder应该转到{@ 3}}时,我在root中的主要主机帐户应该转到http://domain2.co.uk http://www.domain2.co.uk/the-domain2-subfolder

3 个答案:

答案 0 :(得分:0)

您可以使用其他RewriteCond来定义特定的重定向:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^example.org$
RewriteRule ^ https://%{HTTP_HOST}/the-main-subfolder%{REQUEST_URI} [L,R=301,QSA]

RewriteCond %{HTTP_HOST} ^example1\.org$ 
RedirectRule ^(.*)$ /example1\.org-subfolder/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^example2\.org$ 
RedirectRule ^(.*)$ /example2\.org-subfolder/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^host1\.example\.org$ 
RedirectRule ^(.*)$ /host1\.example\.org-subfolder/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^host2\.example\.org$ 
RedirectRule ^(.*)$ /host2\.example\.org-subfolder/$1 [L,QSA]

我添加了一些示例来演示显式实现的可重复性,并且您可以为单独的域和主机名执行此操作(有时会错误地调用"子域")。我总是喜欢这种明确的符号而不是泛型方法,因为你可以单独修改内容,例如用于测试或调试目的。除非您明显处于大规模托管状态,否则基于数据库的方法是有意义的。

请注意,您所谓的"根域"的重定向(example.org此处)现在有第二个RewriteCond。这两个条件都是AND - 默认组合。

为了安全起见,您可能还需要添加一些规则来将请求重定向到特定域名的https://example.org/host1.example.org-subfolder之类的内容,因为根据您的描述,您只能使用托管帐户中的单个文件树。同样请求http://test1.example.org/test1.example.org-subfolder/...以消除文字文件夹名称。

哦,还有一个警告:上面的语法仅适用于.htaccess样式文件。如果您有权访问真正的主机配置,则始终更愿意将此类规则放在那里。但是,您需要稍微改变一下语法。 .htaccess样式规则非常容易出错,难以调试,它们确实会降低http服务器的速度。它们仅作为无权访问主机配置的最后选项提供。

答案 1 :(得分:0)

RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^domain1.co.uk$ RewriteRule ^ https://%{HTTP_HOST}/the-main-subfolder%{REQUEST_URI} [L,R=301,QSA]

谢谢@arkascha - 上面的代码现在一切正常。我想我们根本不需要在这里提到所谓的附加域,因为当我们在托管包(即插件域)上添加后续域时,cPanel会在内部处理它们的子目录!

答案 2 :(得分:0)

只是为了更新我之前的解决方案部分工作,因为它几乎没有琐事/错误。所以回到绘图板突然意识到我不必要地太努力了!

先删除旧的htaccess文件,然后按照以下说明操作..

解决方案已由cPanel在面板图标中称为“重定向”的内容中提供。

我只需输入用户界面文本框中的所有内容,例如选择domainname =“domain1”,旧文件夹=“\”,新文件夹=“https://www.domain1.co.uk/the-main-subfolder” - 然后只需点击创建重定向即可。这样做会自动创建一个.htaccess文件。我在下面分享这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain1\.co\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain1\.co\.uk$
RewriteRule ^/?$ "https\:\/\/www\.domain1\.co\.uk\/the-main-subfolder\/" [R=301,L]