2016-06-29 13 views
0

ユーザーが自分のサイトにサインアップすると、example.com/profiles/[username]にリダイレクトされる.htaccessファイルがあります。醜いURLはexample.com/profiles/?username=johnです。ここで、johnには任意の名前を使用できます。ユーザーが「example.com/profiles/[username]」と表示されると、404が表示されるので、そのフレンドリーなURLを醜いURLにリダイレクトして、そのプロファイルを表示できるようにします。だからexample.com/profiles/johnを内部でexample.com/profiles/?username=johnにリダイレクトする必要があります。それは周りの他の方法ですので、どのように私はそれが作るのですか、mod_rewriteのURLは他の方法でリダイレクトされますか?

RewriteCond %{THE_REQUEST} /profiles/\?username=([^&\s]+) [NC] 
RewriteRule^/profiles/%1? [L,R=302] 

RewriteRule ^profiles/([\w-]+)/?$ /profiles/?username=$1 [L] 

これらの条件が正常にURLの?username=john一部を削除します。

ここに私の.htaccessの条件は?したがって、誰かがexample.com/profiles/johnを検索すると、example.com/profiles/?username=johnにリダイレクトされ、ページが正常に表示されます。 /profiles.user/profiles/?username=userをリダイレクトする

+0

を使用することができます。ブラウザが 'example.com/profiles/john'にあると思ってもらいたいのですが、' profiles'ディレクトリのスクリプトの 'username = john'を' $ _GET'キー=>値として受け取るようにしますか? – Terminus

+0

@Terminus上記の書き換えルールでは、example.com/profiles/?username=johnに行くとexample.com/profiles/johnにリダイレクトされ、ページが存在しないような404エラーが表示されます。だから私の解決策は、ユーザがフレンドリーなURLを入力すると、醜いURLにリダイレクトされ、プロファイルが表示され、404エラーが消えてしまうということでした。ブラウザのURLが友好的な状態にとどまり、醜い状態に変わらないようにすることが好ましいと思います。しかし、友好的なURLは404を表示しています。それが意味するのは – Bytes

+0

です。あなたのウェブルートに 'profiles'ディレクトリとそのディレクトリの' index.php'ファイルがありますか(技術的には2つの質問ですが、ちょっと) – Terminus

答えて

0

あなたは "内部" と言う

RewriteCond %{THE_REQUEST} /profiles/\?username=([^&\s]+) [NC] 
RewriteRule^/profiles.%1? [L,R=302] 

RewriteRule ^profiles\.([^/]+)/?$ /profiles/?username=$1 [L] 
+0

申し訳ありません。example.com/profiles/userをexample.com/profiles/?username=userにリダイレクトしたいという意味です。 – Bytes

+0

@Bytesあなたのオリジナルルールは既にそれを書き換えています。どうしたの? – starkeen

+0

私の元のルールはexample.com/profiles/?username=userをexample.com/profiles/userに書き換えますが、私はこれを望ましくありません。私はそれが は去る – Bytes

関連する問題