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