0

から書き直すsearch/2にはindex.php?search="x"&&searc_by="y"&page_no=2

私が間違っていなければ、%REQUEST_URIですsearch/2よね?また%THE_REQUEST、この場合はどうなりますか。

リンクが配置されているページは、search/2home_page として書き換えられます。

4

1 に答える 1

0

%{REQUEST_URI}および%{THE_REQUEST}mod_rewrite の変数です。これらの変数には次のものが含まれます。

  • %{REQUEST_URI}ホスト名の後ろとクエリ文字列の前のすべてが含まれます。URLhttp://www.example.com/its/a/scary/polarbear?truth=false%{REQUEST_URI}は が含まれます/its/a/scary/polarbear。この変数は、書き換えるたびに更新されます。
  • %{THE_REQUEST}サーバーに対して行われた要求全体を含む変数です。これは の形をしたものですGET /its/a/scary/polarbear?truth=false HTTP/1.1。サーバーに対して行われたリクエストは、そのようなリクエストの存続期間中は静的であるため、書き換えが行われてもこの変数は変更されません。したがって、外部リクエストに何かが含まれている場合にのみ書き換えたい特定の状況で役立ちます。無限ループの発生を防ぐためによく使用されます。

変数の完全なリストは、ここにあります。


あなたの場合、へのリンクがありsearch/2?search=x&search_by=yます。これを内部的に に書き換えたいとしindex.php?search=x&search_by=y&page_no=2ます。これは、次のルールで行うことができます。

RewriteRule ^search/([0-9]+)$ /index.php?page_no=$1 [QSA,L]

最初の引数は、入ってくる外部リクエストと一致します。その後、 に書き換えられ/index.php?page_no=2ます。( QSAquery string append) フラグは、既存のクエリ文字列を書き換えられたクエリ文字列に追加します。あなたはで終わります/index.php?search=x&search_by=y&page_no=2。フラグは、このL「ラウンド」の書き換えを停止します。それは単なる最適化の問題です。

于 2014-10-18T09:51:37.413 に答える