URL重写 - 名称到数字(Apache)

时间:2012-06-24 05:55:47

标签: apache url-rewriting

是否可以在http://www.myurl.com/usa/california/sanjose等网址重定向到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&面积= 3。数字会根据国家,州和城市而变化。

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

1 个答案:

答案 0 :(得分:1)

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

  2. 您在数据库中也没有国家和州名称吗?我建议你获取名称,将它们翻译成ID,然后像之前那样使用ID(这是首选)。

  3. 将好网址翻译为参数的规则集:

    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后 - 包括原始处理程序