【问题标题】:How to keep the same URL for both versions - mobile and desktop?如何为两个版本(移动版和桌面版)保持相同的 URL?
【发布时间】:2017-09-01 06:51:54
【问题描述】:

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

我希望 URL 保持不变,如果用户从移动设备进入网站 example.com,它会重定向到移动版本的相应索引,但 URL 仍然是 example.com 而不是 m.example.com

如何实现?

【问题讨论】:

  • 搜索reverse proxy。但是如果你使用不同的 url 结构,机器人可能会混淆索引。管理多个代码库可能会让人头疼。
  • 这是一个条件代理通过的 nginx 示例。 cyberciti.biz/faq/nginx-if-conditional-http_user_agent-requests
  • 我猜你正在做单独的版本以加快加载时间并摆脱未使用的代码以保持资源低。为相同内容的不同版本保持相同的 URL 看起来和听起来都是个好主意,但 SEO 明智的做法可能会导致灾难。我建议你有单独的 URL,并在你的 HTML 头中添加规范和备用 rel 标签。

标签: php url redirect mobile


【解决方案1】:

答案是肯定的。

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

例子:

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

RewriteRule .* desktop.php [L]

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

【讨论】:

  • 但是如何在不更改 URL 的情况下使用 mod_rewrite 将请求重定向到不同的 index.php?我可以使用RewriteCond %{HTTP_USER_AGENT} "..." [NC] RewriteRule ^$ http://www.example.com/m/ [L,R=302],但它会更改 URL。
  • @XardasLord 我更新了我的答案
【解决方案2】:

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

【讨论】:

  • 没错,我想在不更改 URL 的情况下根据用户设备检测重定向到不同的索引。第一篇文章中的代码运行良好,当我从移动设备输入时,它会重定向到特定的 url。但它改变了网址。那么我应该如何使用重写规则来保持 URL 不变呢?在移动版上,地址www.example.com/contact 应该在移动版上打开。
【解决方案3】:

如果您已经为两个站点都使用了前端控制器。

你可以用这样的东西替换现有的:

<?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,那么您可能不需要这些更改。

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

(大量现有的重写规则和重定向也可能使事情复杂化。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    相关资源
    最近更新 更多