2

次のようなリンクを書き換えようとしています。

/content/about-me

...これに:

/content/about-me.html

私が取り組んでいることには必要です。この htaccess ルールで内部サーバー エラーが発生し続けます。

RewriteRule ^content/(.*) /content/$1.html [NC,L]

私が間違っていることは何か分かりますか?ネット上にはたくさんの例がありますが、うまくいきません。

4

1 に答える 1

1

書き換えルール(パターン)が広すぎて、すでに書き換えられたURLをキャッチします。すでに書き換えられたURLを上書きすると、無限の書き換えループが発生し、Apacheはそのような要求をインテリジェントに検出して500エラーで中止します。

RewriteRule Last [L]フラグが機能していませんか?

例えば:

  • 元のリクエスト:/hello/pink-kitten
  • 最初の(初期)書き換え:/hello/pink-kitten.html
  • 2番目のサイクル:に書き直されました/hello/pink-kitten.html.html
  • 3番目のサイクル:に書き直されました/hello/pink-kitten.html.html.html
  • ... 等々

より正しいアプローチ(いくつかの可能なアプローチの1つ)-書き換える前に、そのようなhtmlファイルが存在するかどうかをチェックします。

# add .html file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^content/(.+)$ /content/$1.html [L]
于 2012-05-15T16:13:53.867 に答える