3

更新: 問題は解決
しました 何時間も経った後、ようやく問題がフォルダーのアクセス許可 (755 ではなく 757) にあることがわかりました。

くそー、私はばかのように感じますが、少なくとも、問題は解決しました:)

みんな、ありがとう!


.htaccess と mod_rewrite で奇妙な問題が発生しています。

現在、ルートに次の .htaccess があります。

Options +FollowSymLinks
Options -MultiViews

RewriteEngine On

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.php [NC,L] 

問題は
、既存のファイルにアクセスできるようにしたいということです。

例: mysite.com/anydir/myfile.png -> anydir/myfile.png を開く
- mysite.com/anydir/script.php -> anydir/script.php を開く
- mysite.com/file.png -> ファイルを開く.png
- mysite.com/notadir/imnotafile -> 書き換え

しかし、2番目の点を除いてすべてが機能します。私はfile.php自分のtestフォルダmysite.com/test/file.php

私は何を間違っていますか?

4

2 に答える 2

7

おそらくトリックを行います:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

更新 1

コードのこの部分:

RewriteRule ^index\.php$ - [L]

[L]書き換えプロセスをすぐに停止し、これ以上ルールを適用しないでください。そう、

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.php [NC,L] 

解釈されません。

更新 2:

サーバーはシンボリック リンクをたどります。

Options +FollowSymLinks

サーバーはマルチビューを無効にします:

Options -MultiViews

書き換えエンジンが有効になります:

RewriteEngine On

書き換えのベースディレクトリは次の/とおりです。

RewriteBase /

要求が存在しないファイルと一致する場合は、続行します。

RewriteCond %{REQUEST_FILENAME} !-f

要求が存在しないディレクトリと一致する場合は、続行します。

RewriteCond %{REQUEST_FILENAME} !-d

センシティブでないケースでは、 に書き換えindex.php、次のルールの実行を停止します。

RewriteRule index.php [NC,L] 

したがって、次のことを試してください。

Options +FollowSymLinks
Options -MultiViews

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule index.php [NC,L]
于 2013-03-09T20:59:57.603 に答える
-1

404エラーを取り除きたいだけなら、使用できます

ErrorDocument 404 index.php

すべてのディレクトリを書き換えたい場合は、削除する必要があると思います。

RewriteCond %{REQUEST_FILENAME} !-d
于 2013-03-09T21:06:30.977 に答える