根目录安装Laravel时如何将子域名指向指定自定义文件夹
第一步:确认基础配置
首先要排除基础配置错误,这是子域名无法访问最常见的原因:
- 确认
x.example.com的DNS解析已正确指向你的服务器公网IP,解析类型选择A记录即可 - 确认服务器的虚拟主机配置中,
x.example.com的站点根目录和主站example.com一致,均指向public_html目录,否则根目录下的重写规则对该子域名完全不生效
第二步:修正重写规则
你原有规则缺少域名匹配的结束标识和忽略大小写标志,同时要保证自定义规则放在Laravel默认规则最前面,完整的public_html/.htaccess配置如下:
RewriteEngine On # x.example.com映射到/x目录规则 RewriteCond %{HTTP_HOST} ^x\.example\.com$ [NC] RewriteCond %{REQUEST_URI} !^/x/ RewriteRule ^(.*)$ /x/$1 [L] # Laravel 默认重定向规则 # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
可选配置:完全隔离Laravel路由影响
如果/x是独立的非Laravel项目目录,可以直接在/x目录下新建独立的.htaccess文件,写入对应项目的重写规则,子目录的.htaccess优先级高于根目录,可完全规避Laravel路由的接管。
注意:修改配置后请清除浏览器缓存,Laravel默认的301重定向会被浏览器长期缓存,可能导致新规则不生效。
内容的提问来源于stack exchange,提问作者PHP User
相关产品推荐
相关产品推荐

