0

何十回も解決された次の問題がありますが、解決策が見つかりません。

私はきれいな URL を取得したいブログ エンジンを書いているので、そのために Apache を使用mod_rewrite.htaccessています。PHPスクリプトできれいなURLを書くことができるので、のようなもの/page/3 => /?s=3は完全にうまく機能しています. しかし、送信に使用する検索用のフォーム フィールドがあるためmethod="get"、クライアントに見苦しい URL を指定する以外に選択肢はありません。だから私が欲しいのは、一種のRedirectクライアントであり、次にRewriteサーバーの URL です/?q=foo =client=> /search/foo =server=> /?q=foo。(また/?q=foo&s=2=> /search/2/foo)

どういうわけか私のルールが機能しません。助けていただければ幸いです。

RewriteRule ^(index\.php)?\?q=(.*)$ search/$2 [R,L]
RewriteRule ^(index\.php)?\?q=(.*)&s=(.*)$ search/$3/$2 [R,L]

RewriteRule ^search/(\d+)/(.*)/?$ index.php?q=$2&s=$1 [NC,L]
RewriteRule ^search/([^/]*)/?$ index.php?q=$1 [NC,L]
4

1 に答える 1

0

実際のリクエストが醜い URL に対するものである場合にのみリダイレクトする必要があります。ループするため、URI と照合することはできません: 醜い URL が要求され、フレンドリーな URL にリダイレクトされ、フレンドリーな URL が要求され、内部的に醜い URI に書き換えられ、リダイレクトされます。わかりやすいURLなどへ

したがって、フライ 2 ルールの代わりにこれを試してください。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index.php)?\?q=([^&]+)&s=([^\ ]+)
RewriteRule ^ /search/%3/%2/? [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index.php)?\?q=([^\ &]+)
RewriteRule ^ /search/%2/? [L,R=301]
于 2012-08-18T00:35:45.510 に答える