0

「きれいなURL」を作成するためにapacheのmod書き換えを使用しています。ルールの例を次に示します。

RewriteRule ^articles/(.+?)\.([0-9]+)/page\=([0-9]+)?$ /index.php?module=articles_full&aid=$2&title=$1&page=$3 [N,NC,QSA]

問題は、エラー ログが次のような内容でいっぱいになることです。

[Fri Feb 01 20:36:11 2013] [error] [client 94.246.88.189] File does not exist: /home/gamingon/public_html/articles
[Fri Feb 01 20:35:55 2013] [error] [client 66.249.73.195] File does not exist: /home/gamingon/public_html/articles
[Fri Feb 01 20:34:39 2013] [error] [client 66.249.73.195] File does not exist: /home/gamingon/public_html/articles

エラーを停止する最良の方法は何ですか? 正常に動作しているように見えますが、それでもエラーログがそれでいっぱいになるとは思いませんか?

4

1 に答える 1

0

ファイルが存在しない場合にのみ RewriteRule を有効にする RewriteCond を追加します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^articles/(.+?)\.([0-9]+)/page\=([0-9]+)?$ /index.php?module=articles_full&aid=$2&title=$1&page=$3 [N,NC,QSA]

編集:

書き換えルールをもう一度見ると、URI が次の形式の場合にのみ一致する非常に具体的な正規表現です。

  • テキスト「記事」
  • 任意の文字の 1 つ以上
  • 1桁以上
  • テキスト "/pages="
  • 1桁以上

したがって、次のような URL で一致します。

ただし、次のような URL ではありません。

404 が表示される場合は、ユーザーが 2 番目のフォームの URL にアクセスしようとしている可能性があります。サイトに正しく作成されていないリンクがいくつかある可能性があります。ログをチェックして、問題の追跡に役立つリファラーを見つけられるかどうかを確認してください。

ルールをテストしましたが、正しい形式の URL を指定すると問題なく動作します。

于 2013-02-04T08:17:22.930 に答える