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

Перенаправить в файл обслуживания с .htaccess

Я пытаюсь сделать простое перенаправление на страницу обслуживания, но похоже, что apache не позволяет мне это сделать!

У меня есть папка для трех версий вики (каждая с определенным языком), поэтому я хочу перенаправить каждый трафик вики на его собственную страницу обслуживания.

вот мой .htaccess

 #Redirect trafic to maintenance page
 RewriteEngine On
 RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC]
 RewriteRule "(.*\/wiki.*\/).*" "$1/maintenance.htm" [R=302,L]

цель - перенаправить "myserver / wiki / ANYTHING" на "myserver / wiki / maintenance.htm"

если бы кто-нибудь мог сказать мне, что я делаю не так, было бы хорошо

Спасибо

Редактировать:

После еще нескольких тестов, похоже, я ищу что-то подобное

RewriteRule "(.*)" "??PROTOCOL??://%{HTTP_HOST}/??SITEFOLD??/maintenance.htm" [R=302,L]

Кажется, это работает:

#Redirect trafic to maintenance page
RewriteEngine On
RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC]
RewriteRule "(.*\/wiki)\/.*" "$1/maintenance.htm" [R=302,L]

Ваша версия позволяет / также соответствовать. * (Поскольку Apache является жадным регулярным выражением), а также включение / в скобки означает, что это повторяется. Итак, в вашем примере:

myserver/wiki/test1/test2

перенаправит на это (с test1 и double /):

myserver/wiki/test1//maintenance.htm

тогда как в моем примере это будет перенаправлено на:

myserver/wiki/maintenance.htm

Я думаю, это то, что вам нужно.

Однако, хотя мое решение, приведенное выше, должно работать, иногда может быть лучше просто упростить его для вашего собственного здравомыслия и иметь только три из них. Хотя это немного повторяется и не масштабируется, если вы ограничены тремя, то иногда ясность лучше, чем ум. Например, если у вас есть английская вики, испанская вики и немецкая вики в / en / wiki, / es / wiki и / de / wiki соответственно, тогда следующее может быть проще.

#Redirect trafic to maintenance page
RewriteEngine On
RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC]
RewriteRule "/en/wiki/.*" "/en/wiki/maintenance.htm" [R=302,L]
RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC]
RewriteRule "/es/wiki/.*" "/es/wiki/maintenance.htm" [R=302,L]
RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC]
RewriteRule "/de/wiki/.*" "/de/wiki/maintenance.htm" [R=302,L]