0

私は少し間違えました(既存のphp呼び出し内で新しいphp呼び出しを開始しました-おっと)そして、グーグルに次のようなURLの全体のクロールを開始させることができました:

http://www.mydomain.com/folder/parameter/%3C/?php%20echo%20writelink();%20?%3E

ソーシング呼び出しを修正しましたが、.htaccessにページ呼び出しを再試行させようとしました

http://www.mydomain.com/folder/parameter/

失敗しました。

私は以下を試しました:

RewriteRule  ^folder/(.*)/(.*)%(.*) /folder/$1/ [NE,R=301,L]
RewriteRule  ^folder/(.*)/(.*)3C/?php /folder/$1/ [R=301,L]
RewriteRule  ^folder/(.*)/(.*)writelink /folder/$1/ [R=301,L]
RewriteRule  ^folder/(.*)/([^/.]+)writelink /folder/$1/ [R=301,L]

しかし、それらはすべて同じ403を返しています。ファイル内の最初のリダイレクターとしてテストリダイレクターがあるので、他の何かに奪われていません。

(参考までに、ページをマックアップしていないときの正しいリダイレクターは、R​​ewriteRule ^ folder /(.*)/$ /content/element.php?param=$1 [L]です)

私は以前にパスの%agesに問題がありましたが、今回はそれを打ち負かすことに決めました-何か提案はありますか?

4

1 に答える 1

1

URLは次のようになります。

http://www.mydomain.com/folder/parameter/</?php echo writelink(); ?>エンコーディングなし。

304コードは実際にはエラーを示しておらず、要求されたURLのリソースが最後にアクセスまたはキャッシュされてから変更されていないことを示しています。ブロワーのキャッシュをクリアし、クリアされていることを確認します。

最初の文字が原因で、エラーは403(禁止)になります< (%3C)

これらのエラーにより、.htaccessでの書き換えルールは役に立たなくなります。この種の問題を処理する1つの方法は、スクリプトを使用することです。

ルートディレクトリの.htaccessファイルに次の行を追加します。

Options +FollowSymlinks -MultiViews
ErrorDocument 403 /Error403.php

次のような内容のError403.phpをルートディレクトリに作成します。

<?php
// The following lines should be at the top of the file

/**************Only for Debugging**********************/
echo $_SERVER[ 'REDIRECT_QUERY_STRING' ] . "<br /><br />"; 
echo var_dump($_REQUEST) . "<br /><br />";
/*=====================================================
NOTE: A Header error might be generated while the above 
code is active. Use it only to display the incoming 
parameters and delete it for normal operation.
*******************************************************/

if ( isset ( $_SERVER[ 'REDIRECT_QUERY_STRING' ] ) ) {
  $QueryString = $_SERVER[ 'REDIRECT_QUERY_STRING' ]; // The query looks like this: php%20echo%20writelink();%20?%3E 

   // Check if it is the wrong URL
  if ( preg_match( '|php%20echo%20writelink()|i', $QueryString ) ) {
  header("Location: http://www.mydomain.com/folder/parameter/");
  }
}
   // Handle other errors
?>

この特定のケースでは、文字列に疑問符が含まれているという事実を利用して?、クエリのように見せます。そのため、クエリの内容を。と一致させようとしますpreg_match()

それはそれをする必要があります。必要に応じてリンクを適宜変更します。これは、その方法の単なる例です。

于 2013-01-27T09:26:50.760 に答える