1

申し訳ありませんが、私は mod_rewrite でかなり役に立たず、何かを手に入れることができました。

基本的に、現在、ページ ID を次のような方法でページに反映しています。

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

ここで、X = ID は何でも。

ただし、次のようにする必要があります。

http://www.url.com/エリア名

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と、新しいエリア ID マッピングがあれば、新しいルールを追加する必要なく、いつでもファイルを編集または再作成できます。

于 2013-09-18T12:01:59.203 に答える