Mod_rewrite用于多个ID和区域

时间:2013-09-18 11:50:11

标签: php apache .htaccess mod-rewrite

请原谅我,但我对mod_rewrite毫无用处,可以用手拿东西。

基本上,我现在的页面以类似于此的方式反映页面ID:

http://www.url.com?id=X

其中X = ID是什么。

但是,我需要它看起来像这样:

http://www.url.com/AreaName

其中AreaName是本地区域(例如/伦敦)。

我有大约30个区域,所有区域都有不同的名称,当然还有ID,我如何进行重写,将所有/ AreaName反映到相关ID?

提前致谢!

1 个答案:

答案 0 :(得分:1)

最好根据您的要求使用RewriteMap。以下是如何使用它的示例:

  1. 将以下行添加到httpd.conf文件中:

    RewriteMap areaMap txt://path/to/areaMap.txt
    
  2. /path/to/areaMap.txt一样创建一个文本文件:

    London 1
    Paris 2
    Moscow 3
    
  3. DOCUMENT_ROOT下的.htaccess文件中添加以下行:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{QUERY_STRING} !^ID= [NC]
    RewriteRule ^([a-z-]+)/([^/]+)/?$ /$2?ID=${areaMap:$1} [L,QSA,NC]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{QUERY_STRING} !^ID= [NC]
    RewriteRule ^([a-z-]+)/?$ /?ID=${areaMap:$1} [L,QSA,NC]
    
  4. 优势:通过此设置,只要您有新的area-id映射,就可以编辑或重新创建文件/path/to/areaMap.txt,而无需添加新规则。