サブディレクトリではなく現在のディレクトリで.htaccessを機能させるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1200348

  •  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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top