Я пытаюсь перенаправить / папку в / с помощью .htaccess, но все, что я получаю, это тестовая страница HTTP-сервера Apache. Мой корневой каталог выглядит так:
/
.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>
Вам нужно удалить начальный '/' из совпадения с RewriteCond
См. Примеры в http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
RewriteEngine On
RewriteCond %{REQUEST_URI} !^folder/
RewriteRule (.*) /folder/$1
Я понял, что мой <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 = /
, затем перенаправить, но я не знаю как.
Убедитесь, что Mod_Rewrite загружен. Убедитесь, что у вас есть AllowOverrides All
в корневом каталоге (это значение по умолчанию для Apache, но в большинстве дистрибутивов по умолчанию none
в файле httpd.conf).