如何使具有唯一 ID 的 URL 美观并提高搜索结果的可见性

Posted

技术标签:

【中文标题】如何使具有唯一 ID 的 URL 美观并提高搜索结果的可见性【英文标题】:How to make URL with unique ID pretty and improve visibility in search results 【发布时间】:2013-12-04 17:06:14 【问题描述】:

我的团队正在开发一个新网站,为一家公司提供“在线旅游注册”服务。在设计旅游页面时,我们正在讨论如何为每个旅游创建一个 URL,这样每个人都可以理解它,另一方面它对搜索引擎有意义。

因此我们开始分析实现美丽 URL 的不同方法。考虑到每个游览都可以通过唯一 ID 识别,因此,示例游览 URL 可能是这样的:

http://www.example.com/tour/0x5P8btUJSo58LFh9Ukm114613052846

0x5P8btUJSo58LFh9Ukm114613052846 是游览的唯一 ID。问题是,如何添加起点和终点名称是 URL,这样每个人都可以通过查看 URL 来了解旅行的位置。你会建议什么?如果我们在 URL 中添加出发地和目的地,那么具有相同目的地和出发地的不同旅行将如何声明?添加 Origin 和 Destination 将如何影响 SEO 并出现在搜索结果中?

【问题讨论】:

您是在问应该使用哪个 URL 设计,还是如何 实现不同的URL 设计? @unor 我在问我应该使用哪种设计。 【参考方案1】:

为什么不在 URL 中也加入日期?

如果 origin + destination + date 在您的情况下是唯一的,您可以省略 ID;如果没有,也要加上出发时间。

各种设计都是可能的,例如:

example.com/tour/paris-to-madrid/2013-11-25
example.com/tour/paris/madrid/2013-11-25
example.com/tour/2013-11-25/paris-to-madrid/
example.com/tour/2013-11-25/paris/madrid/

我选择了一个允许通过 URL 路径操作进行浏览的。例如,如果您有一个包含特定日期的所有旅行的列表,请先使用日期(example.com/tour/2013-11-25/ 显示 2013-11-25 的所有旅行);如果您想显示特定旅行的所有可用旅行日期,请先使用该旅行(example.com/tour/paris-to-madrid/ 显示从巴黎到马德里的所有旅行);等等

我认为很明显,这样一个可读的 URL 比使用一个神秘的 ID 更友好。您更有可能点击哪个链接,哪个链接在访问页面之前就提供了一些信息?

example.com/tour/paris-to-madrid/2013-11-25 example.com/tour/0x5P8btUJSo58LFh9Ukm114613052846

如果除了可读部分之外还包含 ID,则 URL 会变得很长,并且 ID 仍然会分散对重要部分的注意力:

example.com/tour/0x5P8btUJSo58LFh9Ukm114613052846/paris-to-madrid/2013-11-25

【讨论】:

【参考方案2】:

我会使用 Apache Mod_Rewrite 将 /tour/ 目录的所有 URL 重写为单个脚本,并使用查询字符串将请求的路径传递给脚本。

/tours/.htaccess:

RewriteEngine On
RewriteRule ^/?tours/?(.*)$ index.php?q=$1 [NC,L]

然后,在 index.php 中,让它以您希望的任何格式处理$_GET['q'] 的数据。这样,您仍然可以保留指向当前页面的任何链接,但也可以接受新格式。

为了区分不同的游览,我会运行如下格式:

http://www.example.com/tours/Origin/Destination/TourID

也许让 TourID 成为一个更小的字符串,或者甚至由预订旅行的团体定制。

【讨论】:

谢谢你,所以你会推荐http://www.example.com/tours/Origin/Destination/TourID格式。但是OriginDestination 不是必需的——并且只制作漂亮的URL——因为TourID 实际上足以调用旅游。 我输入了 TourID 位置,这样您就可以添加一个唯一的 ID - 这就是您想要的,以区分具有相同起点和目的地的不同旅行吗? 谢谢,我同意你的看法。 (我想知道是否有其他方法可以做到这一点。) 啊-好的。你更喜欢哪种方式? 到目前为止,你提到的方式,我还在努力;)【参考方案3】:

如果您使用的是 Apache,则需要 .htaccess

可能是这样的

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteBase /

RewriteRule ^/?tour/([a-zA-Z_]+)/([a-zA-Z_]+)$ tour.php?origin=$1&destination=$2 [NC,L]

【讨论】:

我可能会删除第二行 - Option +Indexes - 因为索引只会显示 tour.php。

以上是关于如何使具有唯一 ID 的 URL 美观并提高搜索结果的可见性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用户电子邮件地址具有唯一性

如何使复合键唯一?

亮化工程如何提高城市经济效益

MapKit:地图上的位置是不是具有唯一 ID?

我应该如何为测试数据生成具有唯一 id3 数据的 mp3 文件?

S3 如何使公共 URL 唯一