如何將對子資料夾的每個請求重新導向到同一資料夾中的index.php
myserver.com/folder/subfolder1/test redirected to folder/subfolder1/index.php
myserver.com/folder/subfolder2/test redirected to folder/subfolder2/index.php
...
我為每個子資料夾添加了一個 .htaccess,如下所示:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA]
我想用父資料夾中的一個 .htaccess 重新導向它們:
Folder/
.htaccess <-- one redirection here
subfolder1/
index.php
subfolder2/
index.php
subfolder3/
index.php
...
subfolder n /
index.php
PS:所有子資料夾都有不同的名稱,且不遵循命名約定。
答案1
您只需要確保DirectoryIndex
根.htaccess
文件中的設定正確即可。 (預設為index.html
,儘管許多發行版index.php
也包含,因此您通常不需要執行任何操作!)
例如:
DirectoryIndex index.php
當您直接要求目錄時,這會告訴 Apache (mod_dir) 在所要求的目錄中尋找index.php
檔案(注意相對 URL 路徑)。
如果未找到該DirectoryIndex
文件(即。index.php
),那麼您將收到 403 Forbidden(假設啟用了 mod_autoindex 並且禁用了目錄列表,即。Options -Indexes
)。
您無需添加任何內容。 (除非你真的想要一個「外部重定向」?!)
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php [L,QSA]
您不需要使用 mod_rewrite。事實上,這條規則在這裡不會起任何作用,因為第二條規則狀態明確排除對目錄的請求。
參考:
答案2
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/.*$ $1/index.php [L,QSA]
我找到了答案,根據此規則,如果檔案不存在,每個資料夾都會重定向到它的index.php。