如何解决htaccess - 只响应空白子域
如果主域是:example.com
我有一个强制 www 子域的规则。
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
但是,我只想将{blank}重定向到 www。
如果有123.example.com
,我不想回复。
如果有wibble.example.com
,我不想回复。
如果有shop.example.com
,我不想回复。
所以example.com
应该去www.example.com
所有其他人都会收到“未找到站点”消息。
我可以在 .htaccess
执行此操作吗?
解决方法
使用您显示的示例,请尝试以下操作。请确保我新添加的规则位于 .htaccess 文件的顶部。
另外,请在测试您的 URL 之前清除浏览器缓存。
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^ - [F,L]
,
您无法通过 http 服务器中的配置以某种方式在客户端中触发消息“未找到站点”。如果主机名(有时称为“子域”)的名称解析不起作用,则会显示该消息。这是一个 DNS 详细信息,与配置您的 http 服务无关。您必须注意为此设置正确的 DNS 条目。
如果这些子域的 DNS 解析指向您的 http 服务器的地址,则您的服务器会响应。你不能以某种方式配置服务器不来响应传入的请求。这超出了 http 服务器的范围。
在这种情况下,将选择 http 服务器中第一个定义的主机,它充当默认主机或后备主机。因此,您所能做的就是阻止对此类主机的传入请求。为此,你为什么不扭转你的逻辑,这应该更容易理解:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,END]
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^ - [F,END]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。