1

.htaccess での URL の書き換えについて学習していますが、学習できる良い本はありますか。

私はRESTfull Webサービスを構築しており、きれいなURLを扱っています

ここで、他の URL を実現するために、以下の構文を .htaccess ファイルに記述しました。

RewriteRule ([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/([0-9a-zA-Z]) users.php?key=$1&format=$2&uid=$3
RewriteRule ([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users users.php?key=$1&format=$2

例 1

そして、私が試したURLと結果は以下に記載されています

e.g.    http://localhost/site/key/format/users/user_id


http://localhost/rest/r123/json/users/pGQqAMbVQAFx

test.php

<?php print_r($_GET); ?>

そして、の値とない値のみを取得し、値の値keyformat取得しますuidkeyphp

出力。

Array
(
    [key] => php
    [format] => json
)

例 2

http://localhost/rest/r123/json/users/

出力

Array
(
    [key] => r123
    [format] => json
)

また、Apache のドキュメント以外に、初心者向けの URL 書き換えに関する優れた本はありますか。

4

1 に答える 1

1

あなたのルールにはほとんど問題がありませんでした。固定コードは次のとおりです。

RewriteRule /([a-z0-9]+)/([a-z0-9]+)/users/([0-9a-z]+)/? users.php?key=$1&format=$2&uid=$3 [L,QSA,NC]
RewriteRule /([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/?$ users.php?key=$1&format=$2 [L,QSA,NC]

コードの問題/修正:

  1. users/この正規表現を取得した後:([0-9a-zA-Z])これは、おそらく意図した単一の文字と一致します([0-9a-zA-Z]+)
  2. 各書き換えルールの後に、フラグ L (最後のルール)、QSA (クエリ文字列の追加)、NC (大文字と小文字を区別しない) を使用する必要があります。
  3. $不要な URI の一致を避けるために、エンド アンカーの使用を検討してください。
  4. 正規表現の先頭に / を使用して、不要な URI の一致を回避します。
  5. 代わりに、上記のようにフラグを使用して使用[A-Za-z0-9]できます。[a-z0-9]NC

mod_rewritw フラグの詳細については、https ://httpd.apache.org/docs/current/rewrite/flags.html を参照してください。

于 2013-04-26T10:02:31.443 に答える