2017-09-01 48 views
0

移動版和桌面版都可能具有相同的URL嗎?我不是指一個響應式網站,而是一個完全獨立的移動網站,擁有自己的index.php,css和js文件。如何爲這兩個版本保留相同的URL - 移動版和桌面版?

我希望URL保持不變,如果用戶從移動設備進入到網站example.com其重定向到一個移動版本的相應指標,但網址仍然example.com沒有m.example.com

這怎麼能實現?

+0

搜索「反向代理」。但是,如果您使用不同的網址結構,機器人可能會混淆索引。管理多個代碼庫可能會令人頭疼。 – Progrock

+0

這是一個nginx的條件代理傳遞示例。 https://www.cyberciti.biz/faq/nginx-if-conditional-http_user_agent-requests/ – Progrock

回答

1

答案是肯定的。

例如在Apache中,您可以使用mod_rewrite模塊並根據客戶端用戶代理將請求重定向到不同的index.php文件。

實施例:

RewriteCond %{HTTP_USER_AGENT} "..." [NC] 
RewriteRule .* mobile.php [L] 

RewriteRule .* desktop.php [L] 

另外可以使用一個index.php作爲入口點,但是應用可以加載根據客戶端用戶代理不同的模板(主題)。

+0

但是,我怎樣才能使用mod_rewrite重定向請求到不同的'index.php'而不更改網址?我可以使用RewriteCond%{HTTP_USER_AGENT}「...」[NC] RewriteRule^$ http://www.example.com/m/ [L,R = 302]',但它會更改URL。 – XardasLord

+0

@ XardasLord我提出了我的回答 – Neodan

1

我個人建議在apache上下文中進行搜索以存檔您的目標。基本上你只是想將用戶重定向到不同的虛擬主機,並且你想要設備檢測來選擇正確的虛擬主機。如果我錯了,請糾正我。 我將鏈接一個簡短的動作here,您可以在其中找到詳細的教程來完成此項任務。 現在你只需要在你的虛擬主機配置中有一個好的重寫規則來保持域名不變。 Deep tutorial about rewriterules

+0

沒錯,我想根據用戶設備檢測重定向到不同的索引而不更改URL。第一篇文章的代碼工作正常,當我從移動設備輸入時,它會重定向到特定的網址。但它改變了URL。那麼我應該如何使用重寫規則來保持URL不被更改?在移動版上,應該在手機版上打開地址「www.example.com/contact」。 – XardasLord

1

如果您已經爲兩個站點使用了前端控制器。與命名空間的文件夾結構

<?php 
$front_path = is_mobile() ? '/path/to/mobile/front.php' : '/path/to/default/front.php'; 

chdir(dirname($front_path)); 
require_once $front_path; 

function is_mobile() { 
    // Your logic here. Probably sniffing headers. 
} 

此:

你可以像這樣的東西取代現有的

$static_base_url = '/static/mobile'; 

然後一個CSS URL會是這個樣子:

$static_base_url . '/css/main.css' 

如果您已經有適用於CDN的應用程序,那麼您可能不需要t這些變化。

您的資產可能已被搜索引擎索引,重組可能無法進行。如果是這樣,也許看看有條件的反向代理。

(現有重寫規則和重定向的排列也可能使問題複雜化。)

相關問題