0

是否可以进行 URL 重写,其中像http://www.myurl.com/usa/california/sanjose这样的 URL重定向到http://www.myurl.com/c=1&st=3&area=14

这里的问题是,一直以来我们都使用像http://www.myurl.com/c=1&st=3&area=14这样的网址。所有地区州和国家/地区都由数据库中的数字表示。因此,在上面的示例中,如果 usa/california/sanjose 重定向到 c=1&st=3&area=14,如果用户键入 usa/florida/tallahassee,他将不得不重定向到 c=1&st=5&area=3。数字因国家、州和城市而异。

URL重写可以根据名称自动将名称更改为数字,还是我们必须更新数据库并将所有数字更改为名称,以便php文件可以根据名称而不是数字来绘制数据。

4

1 回答 1

1
  1. 您可以根据名称重写,但这将是一个非常糟糕的规则集(您需要相应地重写每个州名、每个国家/地区名称和每个地区 - 基本上是您的所有数据库)。

  2. 您在数据库中也没有国家和州名称吗?我建议您获取名称,将它们转换为 id,然后像以前一样使用 id(这是首选)。

将漂亮的 url 转换为参数的规则集:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /?country_name=$1&state_name=$2&area_name=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+) /?country_name=$1&state_name=$2 [L,QSA]
RewriteRule ^([^/]+) /?country_name=$1 [L,QSA]

第一条规则重写所有三个参数,第二个国家和州以及第三个 - 只有国家你甚至可以将它指向其他文件(不是你的常规索引),然后在将参数转换为 ID 后 - 包括原始处理程序

于 2012-06-24T06:13:48.687 回答