是否可以在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文件可以根据名称而不是数字来绘制数据。
答案 0 :(得分:1)
您可以根据名称重写,但这将是一个规则集的地狱(您需要相应地重写每个州名,每个国家/地区名称和每个地区 - 基本上所有数据库)。
您在数据库中也没有国家和州名称吗?我建议你获取名称,将它们翻译成ID,然后像之前那样使用ID(这是首选)。
将好网址翻译为参数的规则集:
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后 - 包括原始处理程序