將 Web 子資料夾重新導向到根目錄(/資料夾到 /)

將 Web 子資料夾重新導向到根目錄(/資料夾到 /)

我正在嘗試使用 .htaccess 將 /folder 重定向到 /,但我得到的只是 Apache HTTP Server 測試頁。我的根目錄如下圖所示:

/
.htaccess
-/folder
-/folder2
-/folder3

我的 .htaccess 看起來像這樣:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) /folder/$1 

我究竟做錯了什麼?我檢查了我的 httpd.conf (我正在運行 Centos)並且正在加載 mod_rewrite 庫。順便說一句,我的伺服器不是 www 伺服器,它只是一個虛擬機,所以它的主機名稱是 centosvm。

添加:我的 httpd.conf 看起來像這樣:

<VirtualHost *:80>
        ServerName taa.local
        DocumentRoot /var/www/html
        SetEnv APPLICATION_ENV "dev"
        Alias /taa /var/www/html/taa/public
        <Directory /var/www/html/taa/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

答案1

確保 Mod_Rewrite 已載入。確保您AllowOverrides All的根目錄(這是 Apache 預設值,但大多數發行版none在 httpd.conf 檔案中都有預設值)。

答案2

我發現我的<VirtualHost>聲明缺少<Directory>root 聲明。透過將我的更改<VirtualHost為:

<VirtualHost *:80>
        ServerName taa.local
        DocumentRoot /var/www/html
        SetEnv APPLICATION_ENV "dev"
        Alias /folder1 /var/www/html/folder1/public
        <Directory /var/www/html>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        <Directory /var/www/html/folder1/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

我的 /.htaccess 看起來像:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_URI} !^/folder2/
RewriteCond %{REQUEST_URI} !^/folder3/
RewriteCond %{REQUEST_URI} !^/folder4/
RewriteCond %{REQUEST_URI} !^/folder5/
RewriteRule (.*) folder1/$1 [L]

如果我知道要說 if REQUEST_URI = /,然後重定向,那就更乾淨了,但我不知道如何做。

答案3

您需要使用 RewriteCond 刪除符合中的開頭“/”

請參閱中的範例http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^folder/ 
RewriteRule (.*) /folder/$1

相關內容