如何为这两个版本保留相同的URL - 移动和桌面?

时间:2017-09-01 06:51:54

标签: php url redirect mobile

是否可以为移动版和桌面版提供相同的网址?我不是指一个响应式网站,而是一个完全独立的移动网站,拥有自己的index.php,css和js文件。

我希望该网址保持不变,如果用户从移动设备进入网站example.com,则会重定向到相应的移动版索引,但网址仍然是example.com而不是{ {1}}。

如何实现?

3 个答案:

答案 0 :(得分:1)

答案是肯定的。

例如在Apache中,您可以使用mod_rewrite模块并将请求重定向到不同的index.php文件,具体取决于客户端用户代理。

示例:

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

RewriteRule .* desktop.php [L]

此外,您可以使用一个index.php作为入口点,但您可以根据客户端用户代理加载不同的模板(主题)。

答案 1 :(得分:1)

就我个人而言,我建议在apache环境中搜索以存档您的目标。基本上,您只想将用户重定向到不同的虚拟主机,并且您希望设备检测选择正确的虚拟主机。如果我错了请纠正我。 我将链接一个简短的here,你可以在那里找到一个详细的教程来完成这项工作。 现在,您只需要在vhost配置中使用一个好的重写规则来保持域不变。 Deep tutorial about rewriterules

答案 2 :(得分: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网址看起来像这样:

$static_base_url . '/css/main.css'

如果您的应用程序已经适用于CDN,那么您可能不需要这些更改。

您的资产可能已被搜索引擎编入索引,并且可能无法进行重组。如果是这样,也许看看条件反向代理。

(现有的重写规则和重定向的筏也可能使问题复杂化。)