0

我发现这篇关于 URL 重写的文章最有用。但这里有几个问题。

我很想使用一个 URL(在重写之前,查询字符串中有空格)

http://www.store.com/products.aspx?category=CD s-Dvd s 

首先,+出于任何原因,我应该用加号 ( ) 替换空格吗?像这样:

http://www.store.com/products.aspx?category=CD+s-Dvd+s 

其次,我的母语是希腊语。我应该对参数进行编码吗?一般来说,关于 SEO,使用 URL 编码的结果会有所不同吗?

4

3 回答 3

1

实际上,您应该用连字符替换空格。这实际上比使用下划线更适合 SEO。

于 2010-01-08T00:52:08.330 回答
0

一般的做法是用下划线代替空格,alahttp://www.store.com/products.aspx?category=CD_s-Dvd_s

于 2010-01-07T23:25:07.883 回答
0

如果值必须保持不变,那么是的,您必须使用转义。在 URL 查询参数值中,空格可以编码为+%20。只要外部版本拼写正确,mod_rewrite 通常会为您执行此操作。

在 URL 的外部版本中,只能使用 %20:

http://www.store.com/products/CD%20s-Dvd%20s
http://www.store.com/products.php?category=CD%20s-Dvd%20s

因为+URL 路径部分中的 a 字面意思是加号。

(你确定你想要一个空格吗?没有空格的“CDs-DVDs”似乎是一个更好的标题。)

从路径部分到参数获取任意字符串并非易事。除了转义问题之外,您还遇到了问题/,应该将其编码为%2F路径部分。%2F但是,出于安全原因,Apache 默认会阻止任何包含的 URL 。(\在 Windows 下同样受到影响。)您可以使用配置关闭此行为AllowEncodedSlashes,但这意味着如果您想要便携,则不能使用“CD/DVD”作为类别名称。

出于这个原因,并且因为%20在您的 URL 中加载 s 有点难看,字符串通常在放入 URL 之前变成“slugs”,其中所有可能导致可见 %-转义的有争议的 ASCII 字符都是替换为填充字符,例如连字符或下划线。这确实意味着您不能往返字符串,因此您需要在数据库中存储单独的标题和 slug 以便能够为给定的 slug 查找正确的实体,或者只在 URL 中使用附加 ID (就像堆栈溢出一样)。

于 2010-01-08T00:47:02.473 回答