Перенаправление веб-подпапки в корень (/folder to /)

Перенаправление веб-подпапки в корень (/folder to /)

Я пытаюсь перенаправить /folder в / с помощью .htaccess, но все, что я получаю, это Apache HTTP Server Test Page. Мой корневой каталог выглядит так:

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

Связанный контент