次の .htacess ファイルは、すべての URL でサーバー エラーを発生させ、画像や CSS の参照も壊しています。
この modrewrite はNeil Crosby の回答 mod_rewrite から取得したもので、.php を削除しても .php ファイルを提供しますか?
唯一の変更点は、ドメインを .co.nz ドメイン名に変更したことです。
私が起こる必要があるのは:
このソリューションでは、次のルールに従いました。
- ユーザーが /something.php を読み込もうとすると、外部から /something/ にリダイレクトされます。
- ユーザーが /something を読み込もうとすると、内部的に /something.php にリダイレクトされます。
- ユーザーがクエリ文字列パラメーターを URL に渡した場合、これらはリダイレクトによって保持される必要があります。
- ユーザーがファイルシステムに実際に存在する別のファイル (スタイルシート、画像など) をロードしようとした場合、これはそのままロードする必要があります。
これは、サーバーエラーをスローしていることを除いて、modrewrite が本来あるべき状態とまったく同じです。
これに加えて、参照されているディレクトリまたはサブディレクトリがあることを確認したかったので、次の追加でこれも修正されると思っていたでしょう。
RewriteCond %{REQUEST_FILENAME} !-d
これはオリジナルの modrewrite であり、次の場合にサーバー エラーをスローします。そのディレクトリにはインデックスが含まれています) - css と画像は異なるディレクトリにあり、壊れているように見えます。
RewriteEngine on
RewriteBase /
## Always use www.
RewriteCond %{HTTP_HOST} ^domain\.co\.nz$ [NC]
RewriteRule ^(.*)$ http://www.domain.co\.nz/$1 [L,R=301]
# Change urlpath.php to urlpath
## Only perform this rule if we're on the expected domain
RewriteCond %{HTTP_HOST} ^www\.domain\.co\.nz$ [NC]
## Don't perform this rule if we've already been redirected internally
RewriteCond %{QUERY_STRING} !internal=1 [NC]
## Redirect the user externally to the non PHP URL
RewriteRule ^(.*)\.php$ $1 [L,R=301]
# if the user requests /something we need to serve the php version if it exists
## Only perform this rule if we're on the expected domain
RewriteCond %{HTTP_HOST} ^www\.domain\.co\.nz$ [NC]
## Perform this rule only if a file with this name does not exist
RewriteCond %{REQUEST_FILENAME} !-f
## Perform this rule if the requested file doesn't end with '.php'
RewriteCond %{REQUEST_FILENAME} !\.php$ [NC]
## Only perform this rule if we're not requesting the index page
RewriteCond %{REQUEST_URI} !^/$
## Finally, rewrite the URL internally, passing through the user's query string
## using the [qsa] flag along with an 'internal=1' identifier so that our first
## RewriteRule knows we've already redirected once.
RewriteRule ^(.*)$ $1.php?internal=1 [L, QSA]
また、modrewrite と regex に関する私の基本的な理解は非常に最小限であるため、各コマンドとその意味を分解するための支援も本当に感謝しています。