将 Web 子文件夹重定向到根目录(/folder 到 /)

将 Web 子文件夹重定向到根目录(/folder 到 /)

我正在尝试使用 .htaccess 将 /folder 重定向到 /,但我得到的只是 Apache HTTP 服务器测试页面。我的根目录如下所示:

/
.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]

如果我知道该怎么说,那么就会更清楚,如果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

相关内容