0

重複の可能性:
フォーム送信URLフォーマット

私は単純な形をしています:

<form method="GET" action="http://{$smarty.server.SERVER_NAME}/recherche/">
        <input type="text" name="s" value="Recherche" class="text" id="searchbox" />
        <input type="submit" class="search" value="Rechercher !" title="Rechercher !" />
</form>

フォームを送信すると、次のURLが表示されます。

http://mywebsite.com/recherche/?s=mysearch

しかし、私は次のようにURLを適切に書き直します:

# Recherche
RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]

しかし、リダイレクトせずに正しいURL(&s =なし)を取得する方法がわかりません

4

1 に答える 1

1

書き換えルール:RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]サーバーの内部で一方向にのみ書き換えます。このルールは、のようなリクエストに応答して送信されるコンテンツを除いて、ブラウザには何の影響も及ぼしません/recherche/something。実際にアドレスバーのURLを変更したい場合は、内部でURIを操作してコンテンツを返すのではなく、リクエストへのリダイレクトで応答する必要があります。これを行うには、次のものが必要です。

RewriteCond %{THE_REQUEST} ^GET\ /recherche/\?s=([^&\ ]+)
RewriteRule ^recherche/$ /recherche/%1? [L,R=301]

そして、あなたはあなたのルールを持っています:

RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]

それらの両方が一緒に動作する必要があります。1つはブラウザをクエリ文字列なしのURLにリダイレクトし、もう1つはクエリ文字列なしのURLを取得して、内部でクエリ文字列に書き換えます。

于 2012-09-26T21:21:47.313 に答える