Я установил простое перенаправление htaccess, которое выглядит следующим образом (это весь файл .htaccess):
Options +FollowSymLinks
RewriteEngine On
Redirect 301 /something http://something.com/something.php
Если я затем загружу сайт, содержащий этот .htaccess, то есть myredirectsite.com/something, я получу следующее 404:
The requested URL /something was not found on this server.
Apache/2.2.3 (Red Hat) Server at myredirectsite.com Port 80
И журналы:
[Вт 10 июля, 14:25:46 2012] [ошибка] [клиент xx.xx.xxx.xx] Файл не существует: / home / sites / scp / something
Что-то не является файлом, а что-то не существует. Я предположил, что могу использовать Redirect так же, как Rewrite, но похоже, что перенаправление должно быть для файла, который действительно существует?
Я создал файл «что-то», и он просто пытается загрузить пустой файл. Без перенаправления.
Что мне не хватает в работе?
Удостоверься что
AllowOverride All
устанавливается в файле httpd.conf!
Но если у вас есть доступ к основному файлу конфигурации, я бы рекомендовал выполнить настройку там, а не в файле .htaccess - файл .htaccess замедлит работу сервера. Это может не быть проблемой, если у вас очень низкая нагрузка на сервер, но лучше использовать передовой опыт даже в небольших проектах.
Мой файл httpd.conf не был настроен на этом сервере на AllowOverride в каталоге сайта. Было установлено значение «none», которое я изменил на:
AllowOverride All