繁体   English   中英

htaccess通过删除点从几个子域重定向

[英]htaccess redirect from several subdomains by removing the dot

我需要在.htaccess中重定向一组子子网域。 我不太擅长REGEX,也无法理解我读得很好的其他文章,无法将其应用于这种情况。

我的网站布局如下:

quark.subdomain.site.com
yy.subdomain.site.com
bit.subdomain.site.com
etc

子子域可以是任何东西,但子域始终相同。

我需要将它们重定向到:

quarksubdomain.site.com
yysubdomain.site.com
bitsubdomain.site.com
etc

所以基本上,我只需要删除点。

通过使用以下问题的答案,我能够做到这一点: .htaccess 301将一个子域重定向到另一个,用于多个TLD

但这是分别处理每个子子域:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^quark.subdomain\.(.+)$ [NC]
RewriteRule ^ https://quarksubdomain.%1 [L,R=301]

RewriteCond %{HTTP_HOST} ^yy.subdomain\.(.+)$ [NC]
RewriteRule ^ https://yysubdomain.%1 [L,R=301]

但是我有30个左右的子子网域,所以我想更高效一些。

1)是否可以使用通配符方法从子域的任何子子域中删除点?

2)我无法传递domain.com/之后的地址的任何部分。 我正在使用CakePHP,所以REQUEST_URI不起作用,因为它为我提供了Cake隐藏的地址信息。 不使用REQUEST_URI的最佳方法是什么?

奖励积分的链接为初学者解释REGEX特殊字符。 我想纠正我的无知。

您不需要从条件中获取请求URI,可以从重写规则中获取if,并优化从条件保留的内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.subdomain\.site\.com$ [NC]
RewriteRule (.+) https://%1subdomain.site.com$1 [L,R=301]

奖励点...我不知道,也许是https://regexone.com/

经过反复试验,我终于成功实现了以下目标:

RewriteCond %{HTTP_HOST} ^(.+)\.subdomain\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%subdomain.%2/$1 [QSA,L,R=301]

它可以正确获取任何前缀并将其附加到子域名,还可以正确传递.com /之后的位置。 我还使它对域不敏感,因此它也可以在我的开发域上本地运行。

但是我无法给自己任何奖励积分,因为我仍然无法解释为什么必须使用这种方式才能传递特定的页面地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM