我在laravel有单独子域.当有人访问时我想:www.shawn.com 它将自动重定向到 shawn.com,但如果有人访问 * hello.shawn.com *,它可以访问。
但如果另一个访问 www.hello.shawn.com,它将重定向到 * hello.shawn.com * 我已经管理htaccess访问它,但它不能正常工作。
下面是我htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?shawn\.com
RewriteRule ^(.*)$ https://www.shawn.com/$1 [R,L]
</IfModule>
2条答案
按热度按时间5ssjco0h1#
从你的描述看,你似乎只需要删除
www
子域,无论主机名是什么。显然,www
子域目前必须解析到同一个位置。您当前的指令顺序错误。我假设您在
/public
子目录中必须有另一个.htaccess
文件(通过Laravel前端控制器进行实际路由)?在这种情况下,第二条规则(将HTTP重定向到HTTPS+www)-实际上也是一样,因为这将暴露/public
子目录(可能在URL中隐藏),并且似乎与您试图实现的目标相反(即 * 删除 * www)。请尝试以下方法:
不需要
<IfModule>
Package 函数,应该将其移除。无需重复
RewriteEngine
指令。第一个规则中的
%1
反向引用包含从前面的 condition 中捕获的主机名,减去www.
前缀。注意:首先测试302(临时)重定向以避免潜在的缓存问题。在测试之前,您可能需要清除浏览器缓存。
lg40wkob2#
你好。如果你需要访问subdomen**www.hello.shawn.com**,那么你必须再写一次这个语句。