Я обновляю веб-сайт и использую этот файл .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
линий.