1

のようにすべての URL を書き換えたい

www.example.com/pages/foo

の中へ

www.example.com/go.php?q=foo

私はルール belove を使用してそれを行いましたが、クエリを渡すこともできません。

RewriteRule     ^pages/(.*)$            /go.php?q=$1  [L]

書き直したい:

www.example.com/pages/foo?bar=baz

の中へ

www.example.com/go.php?q=foo&bar=baz

どうやってやるの?

4

1 に答える 1

2

それを見つけた!

URL:/pages/foo?bar=baz

RewriteRule ^pages/(.*) /go.php?q=$1 [QSA,L,R]

になります:/go.php?q=foo&bar=baz

何が起こっているのですか:

  • スラッシュの後のすべてをキャプチャして $1 に保存します
  • /go.php?q= でリソースをリクエストし、取得した値を追加します
  • [R] は、表示される URL を変更します (そうしないと、正しいページにヒットしたとしても、URL に変化は見られません)
  • QSA は Query String Append を示しています。これはミッシング リンクです :)
  • [L] は「最後のルール」を意味します: これ以上の一致を探しません

それが役立つことを願っています!

便利なリンク:


2 番目のオプションは次のとおりです。

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^pages/(.*) /go.php?q=$1&%1 [R]
  • クエリ文字列全体を%1としてキャプチャします
  • /path/ の後の URL を$1としてキャプチャします
  • 置換文字列を組み立てて URL を書き換えます

「プレーンテキストに加えて、Substition 文字列には以下を含めることができます

  • RewriteRule パターンへの後方参照 ($N)
  • 最後に一致した RewriteCond パターンへの逆参照 (%N)"

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

于 2013-01-30T12:36:22.827 に答える