как перенаправить на другую страницу, если файл существует в корне? - PullRequest
1 голос
/ 29 июля 2011

Я пытаюсь создать скрипт для размещения всех моих страниц на моем сайте, говоря, что если такой-то файл существует в корневом каталоге ("/"), он будет автоматически перенаправлен на него, и еслифайл не там, он ничего не делает.

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

URL-адрес файла будет http://domain.tld/maintenance.html, и скрипт будет работать, если файл существует, и перенаправлять на этот файл, еслиэто не там не перенаправить.Я знаю, что код перенаправления (в HTML)

<meta HTTP-EQUIV="REFRESH" content="0; url=http://domain.tld">

Ответы [ 5 ]

3 голосов
/ 29 июля 2011

Вы должны попробовать это в вашем файле .htaccess:

RedirectPermanent / /maintenance.html
RedirectPermanent /page2.html /maintenance.html
RedirectPermanent /anotherpage.html /maintenance.html

И так далее.Так что просто сделайте это для каждой страницы вашего сайта, в новой строке для каждого.

Это перенаправит каждую вашу страницу сразу на страницу обслуживания.

.htaccess - лучший способ сделать это, на мой взгляд.(лучше, чем JavaScript)

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ:

Чтобы использовать его, сначала вы положили:

RedirectPermanent

И затем пробел, а затем страница, которую вы хотите перенаправить на страницу обслуживания:

/page.html

А затем еще один пробел и затем страница, на которую вы хотите перенаправить:

/maintenance.html

Итак, все вместе, вот пример:

RedirectPermanent /page.html /maintenance.html

Обратите внимание на пробел между RedirectPermanent , перенаправление страницы с и перенаправление страницы на.

Как это работает, ну, я не знаю.Это не скрипт, это код файла .htaccess.

2 голосов
/ 29 июля 2011

Лучшим способом было бы поместить именованный файл .htaccess в корневую папку со следующим содержимым:

ErrorDocument 404 /maintenance.html

Это автоматически перенаправляет на эту страницу, если вызываемая страница не существует.

2 голосов
/ 29 июля 2011

Вы можете использовать:

if(file_exists('/file.php'))
{
   //do something if file exists
}
1 голос
/ 29 июля 2011

Набор правил перенаправления для вашего веб-сервера - то, что вам нужно.Если вы используете Apache, mod_rewrite - волшебное слово, если вы используете что-то другое, ну, тогда я бы не знал волшебного слова, но нечто подобное существует для большинства серверов, если не для всех.

Но, используя блестящую mod_rewrite Apache, перенаправить ВЕСЬ трафик на заданную страницу или адрес, например, во время обслуживания, просто:

<IfModule mod_rewrite.c>

# Use mod_rewrite
RewriteEngine on

# If you want, you can exclude yourself by adding a condition for the redirection,
# i.e. if the RewriteCond matches, proceed with the RewriteRule
# This statement checks that the IP of the client isn't 123.456.789.012
RewriteCond %{REMOTE_ADDR} !123.456.789.012

# Redirect all traffic to /maintenance.html with a "307 Temporary Redirect",
# except traffic to the maintenance page.
RewriteCond %{REQUEST_FILENAME} !maintenance.html
RewriteRule .* /maintenance.html [R=307,L]

</IfModule>

Где должны быть эти инструкции, вы спрашиваете?Ну, поскольку это временная вещь, наиболее логичным будет файл .htaccess в вашем webroot.Но также возможно включить то же самое в глобальную конфигурацию серверов / виртуальных хостов, что для постоянного набора правил будет иметь смысл с точки зрения оптимизации.

Чтобы отключить перенаправление, достаточно закомментировать либо RewriteEngine onзаявление или RedirectRule заявление.Вы также можете переименовать ваш .htaccess во что-то другое или удалить его.

1 голос
/ 29 июля 2011

Не очень эффективно писать свой собственный серверный скрипт для проверки файла, когда ваш веб-сервер может сделать это за вас. Используйте возможность Apache mod_rewrite в файле .htaccess; вы активируете (то есть раскомментируете) свои правила перезаписи, когда хотите перевести страницу в режим обслуживания. Это также позволит вам получить доступ к веб-сайту во время работы над ним, если вы введете правило, разрешающее доступ с вашего собственного IP-адреса.

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

В качестве альтернативы вы можете использовать быстрый и грязный фрагмент Javascript, похожий на этот (может быть не совсем так): <code><script type="text/javascript">location = www.yoursite.com/maintenance.html;</script>

Хотя было бы лучше использовать переписанные варианты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...