对于网站,我希望使用 URL 重写以便轻松访问页面并更好地编制索引。
例如,假设有关莫扎特的页面是:
www.site.ext/composers/index.php?cmd=composers&id=123
与此相反,我希望访问者输入:
www.site.ext/Mozart
并到达同一页面。
我也希望搜索引擎索引“友好”地址并且不知道“不友好的”真实地址。
下面的两个.htaccess
文件都可以运行并可以访问相同的内容。
在浏览器中,第一个在地址栏中保留友好的 url(即www.site.ext/Mozart
),
#Options +FollowSymlinks
RewriteEngine On
RewriteBase /
#AllowOverride all
RewriteCond %{HTTP_HOST} .
RewriteRule ^Mozart$ composers/index.php?cmd=composers&id=123 [L]
而第二个带有附加R=301
选项,则永久重定向到“不友好”的地址:
#Options +FollowSymlinks
RewriteEngine On
RewriteBase /
#AllowOverride all
RewriteCond %{HTTP_HOST} .
RewriteRule ^Mozart$ composers/index.php?cmd=composers&id=123 [R=301,L]
由于类别名称永远不会随时间而改变,我假设第一种情况(仅进行 URL 重写而没有可感知的重定向)在这种情况下更好,因为搜索引擎会存储和显示友好的 URL,而不是不友好的 URL。事实确实如此吗?
关于整个网站的内部链接(即页面中的锚点),我认为我应该使用 PHP(或同等版本)动态地编写它们的友好 URL 版本而不是默认的不友好版本,以便搜索引擎不会索引不友好的 URL。
作为补充,为了避免索引重复的 URL(以防代码遗漏),我认为在每个页面中提及其友好 URL 作为规范链接是明智的:
<head>
...
<link rel="canonical" href="http://www.site.ext/Mozart" />
...
</head>
上述假设是否正确或存在禁忌症?
答案1
由于类别名称永远不会随时间而改变,我认为第一种情况(仅进行 URL 重写而没有可感知的重定向)在这种情况下更好,因为搜索引擎会存储和显示友好的 URL,而不是不友好的 URL。事实确实如此吗?
是的。
关于整个网站的内部链接(即页面中的锚点),我认为我应该使用 PHP(或同等版本)动态地编写它们的友好 URL 版本而不是默认的不友好版本,以便搜索引擎不会索引不友好的 URL。
是的。仅链接到友好/“漂亮”的 URL。真正的/“丑陋”的 URL 绝不会暴露给用户、搜索引擎或任何类型的机器人。真正的/“丑陋”的 URL 完全在您的应用程序内部。
您可能需要执行的唯一额外步骤是,如果这是一个较旧的网站,并且旧的/“丑陋”的 URL 已被搜索引擎编入索引或被外部网站链接。在这种情况下,您还必须实施外部 301 重定向,从旧的/“丑陋”的 URL 到新的/“漂亮”的 URL,以保留 SEO。
我认为在每个页面中提及其友好 URL 作为规范链接是明智之举
是的,你可以这么做。这还可以确保任何(错误的)URL 参数不会被编入索引。
上述假设正确吗
是的。