请原谅我,但我对mod_rewrite毫无用处,可以用手拿东西。
基本上,我现在的页面以类似于此的方式反映页面ID:
其中X = ID是什么。
但是,我需要它看起来像这样:
其中AreaName是本地区域(例如/伦敦)。
我有大约30个区域,所有区域都有不同的名称,当然还有ID,我如何进行重写,将所有/ AreaName反映到相关ID?
提前致谢!
答案 0 :(得分:1)
最好根据您的要求使用RewriteMap
。以下是如何使用它的示例:
将以下行添加到httpd.conf
文件中:
RewriteMap areaMap txt://path/to/areaMap.txt
像/path/to/areaMap.txt
一样创建一个文本文件:
London 1
Paris 2
Moscow 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]
优势:通过此设置,只要您有新的area-id映射,就可以编辑或重新创建文件/path/to/areaMap.txt
,而无需添加新规则。