1

次のURLがあるとしましょう:

http://example.com/?param

URLから疑問符を削除するにはどうすればよいですか。リライト

http://example.com/param

このようなものに:

http://example.com/index.php?param

これが私のコードですが、機能しません:

RewriteEngine On
RewriteRule ^(.*)$ /index.php?$1 [P]
4

1 に答える 1

6

2つの完全に異なることが起こる必要があります。まず、ブラウザを外部にリダイレクトして、URLアドレスバーに別の情報を表示する必要があります。次に、ブラウザが2番目のリクエストを再送信すると、サーバーは内部でクエリ文字列を書き換えます。それらはロケーターであるため、実際のURLで任意に追加または削除することはできません。新しいロケーターを作成し、古いロケーターの代わりにこの新しいロケーターを使用するようにブラウザーに指示してから、サーバーの内部で新しいロケーターを古いロケーターに戻すことができます。

説明については、この回答の上部を参照してください

ブラウザを新しいURLに移動するには、次のようにします。

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

これは、URL: http ://example.com/?somethingのリクエストを受け取り、ブラウザを次のURLにリダイレクトします:http ://example.com/something

次に、内部で書き直す必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]

http://example.com/somethingに対してリクエストが行われると、サーバーはURIをに書き換えます/index.php?something。これはサーバーの内部にあるため、ブラウザーはサーバーについて何も認識せず、サーバーがURIを処理している間、URLhttp://example.com/something/index.php?somethingを表示し続けます。

于 2012-12-07T10:36:52.200 に答える