0

.htaccessで書き換えルールを使用していると、内部サーバーエラーが発生しているようです

私の.htaccessコードは次のとおりです。

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.$ $1.php [nc]
RewriteRule  ^([a-z][a-zA-Z0-9_-]+)\.htm$ inner.php?url=$1

しかし、サーバーエラーが発生します。エラーメッセージは次のとおりです。

内部サーバーエラー

サーバーで内部エラーまたは構成ミスが発生し、リクエストを完了できませんでした。

サーバー管理者admin@localhostに連絡して、エラーが発生した時刻と、エラーの原因となった可能性のあるすべてのことを通知してください。

このエラーの詳細については、サーバーエラーログを参照してください。

4

1 に答える 1

0
RewriteRule ^(.*).$ $1.php [nc]
RewriteRule ^([a-z][a-zA-Z0-9_-]+).htm$ inner.php?url=$1

最初のルールで何を目指しているのか説明していただけますか?

今のところ、すべてのファイルを同じ名前(最後の文字を除く)で「.php」で拡張されたファイルに書き換えます。

abcdefgはabcdef.phpになります<それはあなたが望むものですか?

本当の問題は、これが何度も発生することです。最初の書き換え後、htaccessが2回呼び出され、書き換えを制限する条件がないため、ルールが再度適用されます。

これを試して:

RewriteCond %{REQUEST_URI} !\.php$    # if the uri does not end with ".php"
RewriteRule ^(.*).$ $1.php [nc,L]     # do not apply another rule after this

RewriteRule ^([a-z][a-zA-Z0-9_-]+).htm$ inner.php?url=$1

よろしく、ステファン

于 2012-04-27T07:44:55.650 に答える