2016-09-28 9 views
0

私はwgetコマンドでローカルサーバーにサイトをミラーリングし、ファイル名は、ローカルで次のようになります。ローカルApacheのクエリ文字列をファイル名として扱うには?

comments 
comments?id=123 

これらは、ユニークなコンテンツを表示する静的ファイルです。 しかし、私は、ブラウザでの第二のファイルにアクセスすると、それは私が手動で?%3F TOをエンコードする場合には、正しいファイルをロードするファイルcomments?id=123

からのコンテンツが表示されないファイルcommentsから内容を示す保持し、それ?id=123にクエリ文字列を追加ブラウザウィンドウで、私はタイプ:

comments%3Fid=123

は、この問題を解決する方法はありますか?たぶん、クエリの区切り文字として?を処理して、ファイル名の文字として扱うことを止めさせるでしょうか?または、URLを書き換えて?%3Fに変更しますか?

編集:実際には、ファイル名と要求に?が原因で発生する問題が多すぎます。私はファイル名を保存するとき@?を変換するwgetオプション--restrict-file-names=windowsを使用して終了しました。

答えて

2

短い答えは「しないでください」です。

これ以上の答えはありますか? URLの予約文字です。ファイル名の一部として使用すると永遠に問題が発生するため、これらのファイル名で使用する別の文字を選択することをお勧めします。選ぶべきものはたくさんあります。ただ避けてください。 & @と#おそらく大丈夫でしょう。

あなたはファイル名を保つことを主張した場合(または、あなたはオプションを持っていない場合)してみてください:

RewriteCond %{QUERY_STRING} (.*) 
RewriteRule (.*) $1%%3F%1 [NE] 

はしかし、これはあなたがクエリ文字列を持っている任意の時間を発射しようとし、そのあなたが望むものではない可能性が高いです。

+0

私はそのディレクトリ内のすべてのファイルが常に静的であることを知っているので、 '?'はすべて問題がありません。しかし、 '$ 1 %% 3F%1'は' '悪い要求' 'と' $ 1 \%3F%1'''サーバーエラー 'を表示します。 – adrianTNT

関連する問題