2012-04-05 36 views
0

我想我要做的比我原先想象的要複雜。第一部分很簡單:我使用.htaccess將移動瀏覽器重定向到不同域的網站的「移動」版本。下面是「非移動」網站根目錄中的.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文件的後續請求)將被重定向到。這兩個域都是同一臺服務器上的虛擬主機。

任何人都可以通過我正在嘗試做什麼,並提供解決方案嗎?

謝謝, 戴夫

回答

1

我想通了這一點。問題是www.domain.tld目錄/ abc中沒有.htaccess來重定向移動瀏覽器。我想我希望Apache神奇地忽略/ abc目錄存在的事實,並通過vhost根目錄下的.htaccess處理所有請求。

因此,http://www.domain.tld/abc的請求未被重定向。而「移動格式」正在被應用,因爲儘管地址欄顯示「http:// www ...」,該資源的請求來自「http:// m ...」,並且CSS文件存在在移動領域。

+0

偉大的你解決了你的問題!請稍後再回來查看並將您的答案標記爲已接受,以便大家都知道您的問題已得到解答。由於網站政策的原因,您可能需要等待48小時才能做到這一點。 – Marijn 2012-04-06 09:25:41

相關問題