我认为我想做的事情比我最初想象的要复杂。第一部分很简单:我正在使用 .htaccess 将移动浏览器重定向到不同域上网站的“移动”版本。这是“非移动”站点根目录中 .htaccess 的内容:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} android.+mobile|iphone [NC]
RewriteRule ^(.*)$ http://m.domain.tld%{REQUEST_URI} [R]
第二部分增加了一些复杂性。我在移动域上使用 .htaccess 将大多数请求重定向到根目录中的 index.php。以下是移动网站根目录中 .htaccess 的内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*) index.php
当发送到非移动站点的请求仅包含域名时,这一切都按预期工作:
http://www.domain.tld
被重定向到
http://m.domain.tld
没有问题。
此外,如果移动浏览器加载
http://m.domain.tld/abc
它按预期工作:移动域根目录中的 index.php 已加载,它解析请求 URL,并将值“abc”分配给变量。
但是,当我尝试导航到
http://www.domain.tld/abc
在移动浏览器中。这导致非移动文件,
http://www.domain.tld/abc/index.php
被加载到浏览器中,由移动域中的 CSS 格式化。我想要执行的初始重定向未执行,但显然,后续请求(如 CSS 文件的请求)正在被重定向。两个域都是同一服务器上的虚拟主机。
任何人都可以通过我正在尝试做的事情并提供解决方案吗?
谢谢,戴夫