【问题标题】:URL Rewriting - Names to numbers (Apache)URL 重写 - 名称到数字 (Apache)
【发布时间】:2012-06-24 05:55:47
【问题描述】:

是否可以进行 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文件可以根据名称而不是数字来绘制数据。

【问题讨论】:

    标签: apache url-rewriting


    【解决方案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 后 - 包括原始处理程序

    【讨论】:

    • 最后,我们决定用与他们的数字相对应的国家、城市和地区名称来更新数据库。然后我们做了一个 htaccess 文件,其规则与您建议的有点相似。目前一切似乎都运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2021-12-23
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多