[英]htaccess RewriteCond !-f issues
更新:問題解決了
幾個小時后,我終於明白問題是在文件夾權限(757而不是755)。
該死的,我覺得自己像個白痴,但至少,問題解決了:)
感謝大家!
我的.htaccess和mod_rewrite有一個奇怪的問題。
目前,我在我的root上有以下.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 - > open file.png
- mysite.com/notadir/imnotafile - >重寫
但是,除了第二點之外,一切都有效。 我在我的test
文件夾中有一個file.php
,但是當我做mysite.com/test/file.php
,它會繼續重寫它,它不應該......
我做錯了什么?
大概可以做到這一點:
<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]
如果你只是想擺脫你可以使用的404錯誤
ErrorDocument 404 index.php
如果你想重寫每個目錄,我猜你應該刪除;
RewriteCond %{REQUEST_FILENAME} !-d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.