使用.htaccess将指定主机名指向不同根目录的问题
子域名目录映射的.htaccess规则修复方案
问题核心
你的规则仅匹配了根路径(无文件名的请求),且Apache默认会优先访问主目录中实际存在的文件,导致带文件名的请求直接走了主目录的文件,未触发重写规则。
正确的.htaccess规则
替换你现有的规则为以下内容:
RewriteEngine On RewriteBase / # 匹配sub.otherdomain.com的所有请求,强制转发到对应子目录 RewriteCond %{HTTP_HOST} ^sub\.otherdomain\.com$ [NC] RewriteRule ^(.*)$ sub.otherdomain.com/$1 [L]
规则说明
^(.*)$:匹配URL中根路径后的所有内容(包括空路径、文件名、子路径)sub.otherdomain.com/$1:将匹配到的路径转发到子目录下的对应位置,$1是前面捕获的请求路径[L]:终止后续重写规则,确保请求被正确转发后不再被其他规则干扰[NC]:忽略主机名的大小写匹配
验证效果
应用规则后,所有异常情况都会被修正:
https://sub.otherdomain.com/test.php→ 访问sub.otherdomain.com/test.php,输出正确内容https://sub.otherdomain.com/index.php→ 访问sub.otherdomain.com/index.php,输出正确内容https://sub.otherdomain.com/test/test.php→ 访问sub.otherdomain.com/test/test.php,输出正确内容
内容的提问来源于stack exchange,提问作者Magnus
相关产品推荐
相关产品推荐

