我們.htaccess在專案的基本目錄中有一個檔案,其中包含一個 RewriteRule 以允許 SEO 友好的 URI。現有檔案或目錄應按原樣提供。該專案可以通過其域直接訪問,即www.example.com. 這個.htaccess檔案看起來像這樣
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
該專案的管理區域位于一個名為 的子檔案夾中/admin。這個管理區域是一個非常基本的老式 PHP 應用程式,它不使用 RewriteRules,它應該像任何普通子目錄一樣可以訪問。使用我上面的示例域將是www.example.com/admin.
此外,我們需要使用 HTTP auth 保護管理區域,因為它沒有內置保護。因此,我們.htaccess在/admin子目錄中放置了另一個檔案,該檔案僅包含 auth 配置,如下所示
AuthType Basic
AuthName "Administration area"
AuthUserFile /path/to/.htusers
AuthGroupFile /path/to/.htgroups
Require group superuser
Options -Indexes
這就是它變得瘋狂的地方,至少對我來說,但這可能只是因為我對 mod_rewrite 模塊缺乏深入了解。如果兩個.htaccess檔案都處于活動狀態,則無法訪問管理區域,因為顯然請求被重寫到index.php基本目錄的檔案中。如果我.htaccess通過重命名禁用這兩個檔案中的任何一個,它會起作用:
- 如果我只禁用目錄中的
.htaccess檔案/admin,主專案的 SEO 友好 URI 仍然有效,我可以訪問管理區域,但它不受密碼保護 - 如果我扭轉局面并僅禁用
.htaccess基本目錄中的檔案,則可以訪問管理區域并受密碼保護,但主專案的 SEO 友好 URI 不再起作用
我嘗試/admin通過RewriteCond %{REQUEST_URI} !^/admin在其他兩個條件之前添加條件來手動從 RewriteRule 中排除目錄,盡管由于 !-d RewriteCond 這應該是多余的,但這并沒有改變行為。
我怎樣才能讓事情同時作業?
uj5u.com熱心網友回復:
因為這個問題,我們之前聯系過我們的基礎設施提供商,但他們只是告訴我們“試試這個和那個”。經過一段時間的修補但仍然無法解決問題,我們再次聯系了我們的基礎設施提供商。這一次,他們實際上自己檢查了他們的系統,并意識到他們在目錄樹的某處(我們無權訪問)中有一個舊的 .htaccess 檔案,這顯然是由 Apache 應用的……他們洗掉了它,現在它一切都好...
經驗教訓:如果事情看起來很奇怪,請惹惱您的提供者,直到他們最終關心為止。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322386.html
