サブディレクトリではなく現在のディレクトリで.htaccessを機能させるにはどうすればよいですか?
-
05-07-2019 - |
質問
mod rewriteを使用して、WebサイトのルートディレクトリにあるPHPファイルに間接的にアクセスしています。現在、私はこのようなものを持っています
RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]
しかし、私が使いたいのは
RewriteRule ^(.*)$ /$1.php [L]
新しいページをウェブサイトに追加するたびに、.htaccessファイルを更新する必要がないようにします。ただし、これに関する問題は、サブディレクトリにも影響することです。 CSS、javascript、画像は" /dir/example.png.php"にリダイレクトされるため、アクセスできなくなります。
では、ここで最善の解決策は何ですか?
解決
このルールを試してください:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* <*>.php [L]
他のヒント
.htaccess
を次のように編集します:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]
書き換えエンジンを起動すると、要求されたファイルがシステム上の実際のファイルであるか、実際にディレクトリであるかを最初に確認します。どちらでもない場合、ルールを実行します。この場合、 .php
を追加して提供することでファイルを検索します。
サブディレクトリ、画像、CSSなどは、見つかったら書き換えから抜け出すので問題ありません。
サブディレクトリを無視するフィルターを使用します。そうすれば、サブフォルダーを追加する場合にのみ変更する必要があります。フォルダ内に画像やその他のファイルがある場合は、 Sosh のような行を追加する必要があります
以下は&quot; images&quot;を無視します。および「js」サブフォルダーとその他すべてのリダイレクト
RewriteRule ^images* - [L]
RewriteRule ^js* - [L]
RewriteRule ^(.*)$ /$1.php [L]
次のようなもの(!に注意):
RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
所属していません StackOverflow