Назад | Перейти на главную страницу

RewriteCond в файле .htaccess дает мне плохие разделители флагов

Я обновляю веб-сайт и использую этот файл .htaccess для отображения страницы обслуживания:

#MAINTENANCE-PAGE REDIRECT
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 # Bogus IP address for posting here
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 # Bogus IP address for posting here
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.mysite.no/maintenance.html [R=307,L]

Откроется страница обслуживания для всех пользователей, кроме двух добавленных мной IP-адресов. Они получают Internal Server Error. Я использовал тот же сценарий на другом сайте, и он отлично работал.

Глядя в журнал ошибок, я вижу следующее:

/var/www/vhosts/mysite.no/httpdocs/.htaccess: RewriteCond: bad flag delimiters 

Если я удалю свой файл .htaccess, я могу нормально работать со своим сайтом.

Мой сайт размещен в VPN с использованием CentOS 5.

Как я могу исправить эту проблему?

Я считаю, что вам нужно использовать [OR] flag для цепочки таких правил:

#MAINTENANCE-PAGE REDIRECT
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 [OR]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 [OR]
RewriteCond %{REQUEST_URI} !^/maintenance\.html$ 
RewriteRule ^(.*)$ http://www.mysite.no/maintenance.html [R=307,L]

В документации apache он находится внизу этого раздела в качестве примера: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

Также вы можете использовать RewriteLog и RewriteLogLevel 3 директивы, чтобы, возможно, получить больше информации.

Некоторые вещи, которые стоит попробовать / проверить:

  • Удостовериться mod_rewrite загружается и включается в apache.
  • Убедитесь, что FileInfo переопределение разрешено (с AllowOverride) для .htaccess файлы.
  • Удалите комментарии из вашего RewriteCond линий.