我有一個特定的網站結構:
root:
styles.css
pages/index.html
folder_with_assets_1
folder_with_assets_2
folder_with_images
我已重命名為index.html以index.php擺脫.htmlURL 中的擴展名
但問題是它index.php不在根檔案夾中,而是在pages檔案夾中。哪些正確的.htaccess規則可以解決問題以將請求重定向到pages檔案夾?
使用檔案夾結構更新螢屏截圖:


uj5u.com熱心網友回復:
從表面上看,這只是一個標準的前端控制器模式。前端控制器是位于子目錄內還是直接位于檔案根目錄中在很大程度上無關 - 程序是相同的。
假設您.htaccess在檔案根目錄中使用該檔案,并且頁面URL沒有可識別的模式...
例如,使用 mod_dir FallbackResource:
FallbackResource /pages/index.php
或者,使用 mod_rewrite:
DirectoryIndex /pages/index.php
RewriteEngine On
RewriteRule (^|/)index\.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . pages/index.php [L]
更新#1:
它是具有大量 JS 和 CSS 的“單頁”網站格式。只有本地 URL 指向部分(href 標記)和對特定 PHP 檔案的 AJAX 呼叫
在這種情況下,看起來您需要更改DirectoryIndex- 您根本不需要前端控制器模式(如上所述)。
例如:
DirectoryIndex /pages/index.php
現在,對“主頁”的請求,即檔案根https://example.com/將服務/pages/index.php。
更新#2:
從您的螢屏截圖來看,似乎啟用了目錄串列 (mod_autoindex)。這些應該在.htaccess檔案的頂部被禁用:
Options -Indexes
更新#3:
從您的螢屏截圖來看,您在檔案結構中所謂的“根”似乎并不是您網站的“檔案根”,因為您是通過/test子目錄訪問該位置,即。localhost/test/. 上面的指令假設這些檔案位于“檔案根目錄”中,即。localhost/并且沒有/test子目錄。(我期望它是如何在您的“實時”環境中構建的?)
如果您的.htaccess檔案位于/test子目錄中并且您正在請求localhost/test/(根據您的螢屏截圖),那么您需要相應地調整它:
例如:
DirectoryIndex /test/pages/index.php
但是,這在實時站點上不起作用(假設您在實時站點上沒有/test子目錄)。相反,您可以簡單地省略斜杠前綴,以使其成為相關的。
例如:
DirectoryIndex pages/index.php
這應該適用于您的情況,因為您有一個 SPA(只是一個主頁 URL)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/403318.html
標籤:
