子域名跨服务商重定向至指定目录并保持URL规范
解决子域名指向目录后URL显示异常及页面空白问题
第一步:补全虚拟主机权限配置
你的虚拟主机配置缺少目标目录的访问权限声明,这很可能是页面空白的核心原因。修改httpd-vhosts.conf,给me.comp.com的虚拟主机添加<Directory>配置块:
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/app2" ServerName me.comp.com ErrorLog "logs/me.comp.com-error.log" CustomLog "logs/me.comp.com-access.log" common <Directory "C:/xampp/htdocs/app2"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
AllowOverride All是让.htaccess规则生效的前提,之前未开启的话,你的重写规则根本不会被执行。Require all granted确保Apache允许访问该目录,避免权限限制导致的空白页。
第二步:修正.htaccess重写规则
原规则仅处理了IP跳转,未解决隐藏/app2路径和默认首页的问题。将C:/xampp/htdocs/app2目录下的.htaccess替换为以下内容:
RewriteEngine On # 强制使用域名访问,禁止IP直接访问 RewriteCond %{HTTP_HOST} ^xxx\.xxx\.xxx\.xxx$ RewriteRule ^(.*)$ http://me.comp.com/$1 [R=301,L] # 设置默认首页,访问根目录时自动加载index.php DirectoryIndex index.php index.html # 隐藏URL中的/app2路径(如果应用逻辑依赖根路径) RewriteCond %{REQUEST_URI} !^/index.php RewriteRule ^(.*)$ index.php/$1 [L,QSA]
如果你的应用已经将app2作为根目录运行,可简化为:
RewriteEngine On # IP跳转规则 RewriteCond %{HTTP_HOST} ^xxx\.xxx\.xxx\.xxx$ RewriteRule ^(.*)$ http://me.comp.com/$1 [R=301,L] # 访问根目录时自动指向index.php,不显示路径 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^$ index.php [L]
第三步:验证核心模块与配置
- 确认Apache的
mod_rewrite模块已启用:打开httpd.conf,找到#LoadModule rewrite_module modules/mod_rewrite.so,删除行首的#注释。 - 重启XAMPP的Apache服务,所有配置修改必须重启后生效。
- 清除浏览器缓存,301重写属于永久缓存,之前的错误跳转记录可能残留。
额外排查方向
- 查看
me.comp.com-error.log中的错误信息,空白页大概率是权限问题或PHP执行错误,日志会给出明确提示。 - 若在本地测试,检查系统hosts文件是否存在域名解析冲突,确保
me.comp.com指向正确的服务器IP。
内容的提问来源于stack exchange,提问作者Balael
相关产品推荐
相关产品推荐

