0

私は次の.htaccessファイルを持っています:

RewriteEngine On
RewriteBase /
RewriteRule ^plugins/.* pluginLoader.php [L]
RewriteRule ^settings\.php index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.art$ [OR]
RewriteCond %{REQUEST_FILENAME} /system/
RewriteRule .* index.php [L]

URLがディレクトリにある拡張子のない既存のファイルの名前を指すまで、期待どおりに機能しますplugins。どうしてか分かりません。たとえば、/plugins/invoice/name.txtファイルがあります。

http://localhost/plugins/invoice/name.txt
   uses pluginLoader.php as expected
http://localhost/plugins/invoice/name.
   uses pluginLoader.php as expected
http://localhost/plugins/invoice/name
   uses index.php! Why?
http://localhost/plugins/invoice/nam
   uses pluginLoader.php as expected

.txtまたは.php拡張子を持つすべてのファイルに同じことが当てはまります。ファイルに.sql拡張子がある場合、どちらも使用しpluginLoader.phpませんindex.php404-not foundを送信します。

プリプロセッサはありますか?

また興味深いのは次のとおりです。

RewriteEngine On
RewriteBase /
RewriteRule ^plugins/.* pluginLoader.php [L]
RewriteRule ^settings\.php index.php [L]

最後の 4 行を削除すると機能します。ただし、URLhttp://localhost/plugins/invoice/fillにはまだ 404 エラーが発生します。ファイルの名前が変更されると、URL が機能します。

神秘...

4

1 に答える 1

0

.htaccess コードをこれに置き換えて、それが役立つかどうかを確認します。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^plugins/ pluginLoader.php [L,NC]

RewriteRule ^settings\.php/?$ index.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.art$ [OR]
RewriteCond %{REQUEST_FILENAME} /system/
RewriteRule ^ index.php [L]

$DOCUMENT_ROOT/pluginsディレクトリに .htaccess がないことを確認してください。

于 2012-05-30T16:49:10.613 に答える