2016-11-08 4 views
1

私の質問をもう一度聞いて、私ができる限りそれを説明しようとしています。localhostでリダイレクトせずにhtaccess内のURLを書き換えるには?

私はWindows上でWAMPを実行しています10. Apacheバージョン2.4.18。私のプロジェクトは、hoidja.eeというwwwというフォルダにあります。 mod_rewriteが有効になっている場合は、AllowOverrideがすべてに設定されます。

このフォルダ内には.htaccessというファイルがありますが、リダイレクトなしで書き直しを実行しようとしていて、全く動作しません。 index.php/home/に書き換えることができるので、私は.htaccessファイルが動作していることを知っています。

私はすべてのユーザーリストを含むページを持っています。あなたは、ユーザーをクリックすることができ、そしてそれは、URLが表示されます:

http://localhost/Hoidja.ee/hoidja.php?user_id=94&username=John

私はこれが表示したいと思いどのように任意のリダイレクトなし

http://localhost/Hoidja.ee/user/John 

です。

は、私が試してみました何:

#tried first with only user_id 
RewriteCond %{QUERY_STRING} ^user_id=([A-Za-z0-9-]+)$ 
RewriteRule ^hoidja\.php$ /user/%1? [L] 

これは私に/ユーザー/ 94が存在しない404を与えました。

RewriteRule ^user/([0-9]+)/([A-Za-z0-9-]+)/?$ hoidja.php?user_id=$1&username=$2 [QSA] 

これは視覚的には何もしません。手動でURLにhttp://localhost/Hoidja.ee/user/94/Johnと入力すると、そのページに移動してユーザーデータが表示されますが、元のURLを入力すると書き換えられません。私は<base>も使っています。

私はすべての可能な方法を試しましたが、何も動作していないようです。私はどのようにURLを書き直すことができますか?その後、

+0

、それだけで物事をより複雑で曖昧になります...本当です – arkascha

+0

@arkascha。 user_idを使用してデータベースからデータを取得していますが、URLにユーザ名を表示したいのですが、 – raqulka

+0

名前を表示するのに何もしません。しかし、あなたはそれを書き直す必要はありませんか? – arkascha

答えて

0

あなたは、存在しないパスに/ユーザー/ 94を書き換えているので、あなたは404エラーを取得している。あなたは、/hoidja.php?user_id=へ/ユーザーをリダイレクトする必要があります/ 94/user/94を実際の場所に戻してください。本当に意味がない_both_、ユーザーIDとユーザー名を使用して

RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteCond %{QUERY_STRING} ^user_id=([A-Za-z0-9-]+)$ 
RewriteRule hoidja\.php$ /hoidja.ee/user/%1? [L,R] 
RewriteRule ^(?:hoidja\.ee/)?user/(.+)$ /hoidja.ee/hoidja.php?user_id=$1 [L] 
+0

それを試して、確かにそれはURLを書き換えません。しかし、それは今私にこれを与える:http:// localhost/user/83ので、最初のものではなく、localhostフォルダに行く – raqulka

+0

はい。それは今働きます。私は私の質問で言ったように教えてください:user_idではなくusernameを表示できますか?だから私はURLにパラメータを設定する必要があります。それも可能ですか? http://localhost/Hoidja.ee/user/John – raqulka

+0

いいえ、それは不可能です。あなたはユーザー情報を見つけるためにあなたのスラッグでidが必要です。 – starkeen

関連する問題