2012-03-08 62 views
0

場景:我有一個設置了php'Mobile Detect'功能的網站。如果檢測到移動設備或版本=移動設備(設置cookie),則會顯示(通過php)移動版本的頁面。如果沒有檢測到移動設備,或者如果version = full(設置cookie),則會顯示(通過php)該站點的完整版本。這一切都發生在我的域名的example.com上。如果用戶瀏覽到子域名,PHP重定向到移動版本

如果用戶訪問m .example.com,我希望允許用戶強制使用該網站的移動版本(以防他們以前設置了版本Cookie)。

有沒有辦法將m.example.com重定向到www.example.com AND設置version = mobile? 我試着用我的DNS設置做這個,使用從'm'子域的URL重定向到www.example.com/index.php?version=mobile,它爲URL工作,但是當顯示頁面時,儘管?version = mobile在URL中,我的PHP'Mobile Detect'沒有選擇這個,並且仍然呈現完整版本的頁面。

編輯:: FYI我在Linux服務器上。

+0

我會使用mod_rewrite – 2012-03-08 20:46:03

+0

另一種處理你想要實現的,而不是php或重定向的方式是使用http://mediaqueri.es/ – evasilchenko 2012-03-08 20:46:26

+0

@AlexLunix - 你能解釋一下嗎?謝謝:) – adamdehaven 2012-03-08 20:48:15

回答

2

這是PHP代碼,它是更有效的,如果你使用的htaccess這個

$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); 
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android"); 
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS"); 
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry"); 
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod"); 

if ($iphone || $android || $palmpre || $ipod || $berry == true) 
{ 
    echo "<script>window.location='http://m.site.com'</script>"; 
} 
+0

我已經有一個Mobile Detect。我想你誤解了我的問題?我想將m.example.com重定向到www.example.com並強制使用移動版本。通常情況下,如果用戶從子域重定向,他們很可能會看到正確的版本(因爲我的移動檢測),但我想強制它。您認爲我會如何使用htaccess? – adamdehaven 2012-03-08 20:50:22

+1

爲什麼不''header(「Location:http://m.site.com」);'?你甚至可以在'setcookie'之前。 – Basti 2012-03-08 20:50:26

+0

@Basti - 請重新閱讀我的問題。移動版本和完整版本位於www.example.com域名上。 PHP根據其設備檢測要呈現哪個版本。如果他們在地址欄中鍵入「m.example.com」,我想強制使用移動版本。 – adamdehaven 2012-03-08 20:52:33

0

也許爲時已晚了,但我認爲這個問題可能與該Cookie。 cookie的值不會在您設置它的時刻更改,它的更改會在/腳本的en處更改。因此,如果您在腳本的開頭爲Cookie分配了「移動」值,然後您的腳本根據此值運行,則值可能尚未設置爲「移動」。如果您在開始時將Cookie的值寫入變量中,然後再使用該變量,而不是依賴Cookie,那會更好。所以cookie首先將變量設置爲'full'(默認)或者來自重定向的NULL,然後$ _GET將該變量設置爲'mobile'併發送命令以將cookie設置爲'mobile',稍後將設置該cookie 。然後你的代碼的其餘部分應該根據變量行事。

0

除非您從數據庫或其他方式(認爲漂亮的網址爲例),否則您的每個網頁都必須包含移動版和完整版的代碼。然後,您可以將您的代碼編寫爲IF/ELSE語句。

相關問題