我的团队正在开发一个新网站,为一家公司提供"在线旅游注册"服务。在设计旅游页面时,我们讨论了如何为每个旅游创建一个URL,这样每个人都可以理解它,另一方面它对搜索引擎来说是有意义的。
因此,我们开始分析实现Beautiful URL的不同方法。考虑到每个旅游都可以通过一个唯一的ID来识别,所以,一个旅游URL的例子可能是这样的:
http://www.example.com/tour/0x5P8btUJSo58LFh9Ukm114613052846
其中0x5P8btUJSo58LFh9Ukm114613052846
是该旅游的唯一ID。问题是,如何添加出发地和目的地名称是URL,这样每个人都可以通过查看URL来了解旅行的位置。你有什么建议?如果我们在URL中添加出发地和目的地,那么如何声明具有相同目的地和出发地的不同旅行?添加来源和目的地将如何影响SEO并出现在搜索结果中?
为什么不把日期也放在URL中?
如果始发地+目的地+日期在您的情况下是唯一的,您可以省略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
我会使用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成为一个小得多的字符串,甚至可以由预订旅行的团队定制。
如果使用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]