2016-03-19 8 views
0

私のPHPファイルは、URLパラメータURLは次のようになりますようid探しパーセントエンコードされたハッシュ(#)を変換しません。 URLは以下のような見えるように、私は.htaccessファイルを使用してURLをクリーンアップ:.htaccessファイルが正しく

、それは私がこのような#octothorpeとしてプレイヤーIDを渡す場合には(%の23octothorpeとしてエンコード以外の罰金となっています)。なんらかの理由で、これはまだURLの断片として読み取られ、サーバーによって無視されるため、PHPファイルがidを検索すると、それを見つけることができません。興味深い部分は、その作品が完全に細かいこと私は醜いURLを使用する場合

www.example.com/player.php?id=%23octothorpe

ですが、私は

www.example.com/Player/%23octothorpe

を行うときにはid

関連を見つけることができません.htaccessファイルの一部は次のようになります。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

RewriteRule ^Player/(.*)/$ player.php?id=$1 
RewriteRule ^Player/(.*)$ player.php?id=$1 

答えて

0

ここで、私は私の問題を理解しました。問題は、それがhtaccessファイルで変換されたときにApacheが私のURLをデコードしたということでしたので、私は

RewriteRule ^Player/(.*)/$ player.php?id=$1

RewriteRule ^Player/(.*)/$ player.php?id=$1 [B]

0

問題は、URLフラグメントがApacheサーバーに渡されないということです。クエリ文字列パラメータでそれを使用した場所では、URLフラグメントと見なされないため、なぜ動作します。

Why the hash part of the URL is not in the server side?

あなたのidのは、あなたのURLの別の戦略を考える必要がありますハッシュ文字が含まれている場合。ソリューションは実際にはアプリケーションの広いコンテキストに依存します。

+0

は、私は理解してなるように、私のルールに[B]のフラグを使用しましたハッシュはサーバーに送られませんが、%23で渡されるようにハッシュをエンコードしました。 – DonutGaz

関連する問題