0

私は以下のURLを持っています

www.localhost.com/profile.php?username=first.last

上記のURLを.htaac​​cessファイルを使用するように永続的にリダイレクトしたいと思います。(Apacheサーバー)

www.localhost.com/first.last

他にもいくつかのURLがあることを考慮してくださいが、私はそれらに触れたくありません。

www.localhost.com/message.php?id=12
www.localhost.com/editprofile.php?editname=first.last
www.localhost.com/uploadphoto.php?username=first.last

誰か助けてくれませんか。前もって感謝します。

4

1 に答える 1

1

でクエリ文字列を処理しRewriteCond、キャプチャされた一致を に渡すことができRewriteRuleます。書き換えルールのスクリプトを除外する必要があり.phpます。そうしないと、他の URL で問題が発生します。

[QSA] タグを追加することを忘れないでください。RewriteRuleそうしないと、クエリ文字列パラメーターが追加されません。

たぶん、次のようなことをしています:

RewriteEngine on

#serve any existing php scripts as usual
RewriteRule ^([a-zA-Z0-9]+\.php) - [L]

#and now handle your specific stuff:
RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+\./[a-zA-Z0-9]+)$
RewriteRule ^(%1)$ /profile.php?username=%1 [QSA]

私はそれをテストしていませんが、それは良い始まりになるはずです。特定の書き換えのユースケースを作成および処理する方法については、ここmod_rewrite httpd 2.2のドキュメント内でいくつかの優れた内容を読むことができます。

于 2012-09-02T07:15:07.780 に答える