一般需要在 Apache 中从二级子域中删除 www(使用重写)

发布于 2024-09-06 08:48:26 字数 256 浏览 5 评论 0原文

我有问题,但有很多子域:例如。

sub1.domain.com 和 new.domain.com 和 xsub.domain.com 以及更多类似的内容。

如何使用一个通用规则从其中任何一个前面删除 www。

例如,如果有人输入 www..domain.com 或 http://www..domain.com 将其更改为

http://.domain.com

谢谢

I have the problem but with many subdomains: E.g..

sub1.domain.com and new.domain.com and xsub.domain.com and many many more like this.

How do I remove the www from in front of any of these with one generic rule.

E.g. if someone types www..domain.com or http://www..domain.com to change it to

http://.domain.com

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

诗酒趁年少 2024-09-13 08:48:26

您可以使用重写模块来删除 www.当它位于子域之前时。这样,像 www.sub1.domain.com 这样的地址将被重定向到 sub1.domain.com:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
   RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
   RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
</IfModule>

You may use the rewrite module to remove the www. when it precedes a sub-domain. In this way, an address like: www.sub1.domain.com would be redirected to sub1.domain.com:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
   RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
   RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
</IfModule>
寒尘 2024-09-13 08:48:26

修改后的测试解决方案,但仅适用于 http。

#Allow domain of the form www.domain.com
RewriteCond %{HTTP_HOST} !^www\.([^\..]*)\.([^\..]*)$ [NC]

#Otherwise any other form must be rewritten to remove www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

#Substitue the complete domain using group %1 in the parentheses of the above condition
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]

Modified tested solution but for http only.

#Allow domain of the form www.domain.com
RewriteCond %{HTTP_HOST} !^www\.([^\..]*)\.([^\..]*)$ [NC]

#Otherwise any other form must be rewritten to remove www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

#Substitue the complete domain using group %1 in the parentheses of the above condition
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
赏烟花じ飞满天 2024-09-13 08:48:26

这将完成这项工作,并返回 http://

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) http://%1/$1 [R,L]

对于 https,只需添加 s,如下所示:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) https://%1/$1 [R,L]

请注意,这也可以在 httpd.conf 中完成。使用 .htaccess 很流行,但实际上会降低站点速度,特别是在存在嵌套目录的情况下。

您确实需要:

Options +FollowSymLinks

但您不需要索引。

This will do the job, and return with http://

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) http://%1/$1 [R,L]

For https, just add the s, as so:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) https://%1/$1 [R,L]

Note that this can be done in httpd.conf as well. Using .htaccess is popular but actually slows down the site, especially if there are nested directories.

You do need:

Options +FollowSymLinks

But you do not need Indexes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文