1

请原谅我,但我对 mod_rewrite 毫无用处,并且可以用一些东西。

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

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

其中 X = 无论 ID 是什么。

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

http://www.url.com/AreaName

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

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

提前致谢!

4

1 回答 1

1

最好根据RewriteMap您的要求使用。这是一个如何使用它的示例:

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

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

    London 1
    Paris 2
    Moscow 3
    
  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,而无需添加新规则。

于 2013-09-18T12:01:59.203 回答