如何解决.htaccess从子域的文章重定向到主域
| 我有子域:sub1.tld.com,sub2.tld.com等。此子域包含重要信息。但是我想防止打开任何其他URL,例如:sub1.tld.com/anypage或sub2.tld.com/dir/more/anyurl.html。该网址必须重定向到主域名tld.com:tld.com/anypage或tld.com/dir/more/anyurl.html 因此,在重定向之前,我必须检查2件事: 它是任何子域 它不是子域的根页面 我创建了以下规则:RewriteCond %{HTTP_HOST} ^.+\\.tld\\.com [NC]
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*) http://tld.com/$1 [R=301,L]
这组规则按预期工作(将sub1.tld.com/anypage重定向到tld.com/anypage),但也将sub1.tld.com重定向到tld.com。错误在哪里?第二个字符串是错误的?
解决方法
尝试这个:
RewriteCond %{HTTP_HOST} ^.+\\.tld\\.com$ [NC]
RewriteRule ^/(.+)$ http://tld.com/$1 [R=301,L]
或者,您可以使用以下字符串检查其是否为root:
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\\ /\\ HTTP/
,由于某些未知原因,最可靠的检查变量是%{THE_REQUEST},而不是%{REQUEST_URI}。
%{THE_REQUEST}包含浏览器对Web服务器的查询:例如,如果要打开URL http://anysite.com/anypage.html,则为GET /anypage.html HTTP / 1.1。
因此,这是.htaccess的完整工作规则集:
RewriteCond %{HTTP_HOST} ^.+\\.tld\\.com$
RewriteCond %{THE_REQUEST} ^get\\ /(.+)\\ http.* [NC]
RewriteRule ^(.+) http://tld.com/$1 [R=301,L]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。