Обработка сайта, не найденного и страница, не найденная с динамическим массовым виртуальным хостингом

Если Ваши имена файлов могут содержать пространство или кавычки, необходимо использовать Параллель GNU, http://www.gnu.org/software/parallel/ вместо xargs как xargs может привести к противным неожиданностям из-за проблемы разделителя http://en.wikipedia.org/wiki/Xargs#The_separator_problem:

git show --pretty="format:" --name-only  | grep '\.php$' | parallel phpmd $dir/{} text codesize,unusedcode,naming

GNU Смотрит вводное видео для Параллели GNU для узнавания больше: http://www.youtube.com/watch?v=OpaiGYxkSuQ

2
задан 7 March 2013 в 18:30
1 ответ

Я ожидал, что он переключится на первый виртуальный хост, однако с этой настройкой все домены разрешаются на мой сайт по умолчанию, который не найден. Почему это так?

Нет никакой логики переключения между разными виртуальными хостами - когда запрос назначен одному, он является окончательным.

Если у вас нет ServerName или ServerAlias ​​ в вашем динамическом блоке виртуального хоста, вы зависите от поведения «первый загружаемый виртуальный хост по умолчанию» для назначения запросов этому виртуальному хосту. Когда это не первый загружаемый виртуальный хост, он по сути инертен; у него нет способа получить запрос.


Моя рекомендация, как с этим справиться, состоит в том, чтобы поведение «сайт не найден» было либо прокси-сервером, либо перенаправлением на рабочий сайт (который затем обслуживает «нет контента» здесь! "страница), вместо варианта вашей страницы 404.

Переместите виртуальный хост sitenotfound.mydomain.org вниз и верните динамический наверх, чтобы он стал по умолчанию. Мы будем использовать его для обслуживания нашей дружелюбной страницы «здесь нет сайта».

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

RewriteEngine On
# If there's no directory where it should be for this host..
RewriteCond /var/www/vhosts/%{HTTP_HOST} !-d
# (or a symlink, we'll be ok with those too)
RewriteCond /var/www/vhosts/%{HTTP_HOST} !-l

# Then, we'll redirect the user to our friendly "no site here" page..
# Note that I'm setting it to 302 so that they won't be cached, since
# you might trigger this accidentally just before a new site goes live..
RewriteRule ^ http://sitenotfound.mydomain.org/invalid-site.html [R=302,L]

# Or if you wanted to proxy instead of redirecting, use this instead:
#RewriteRule ^ http://sitenotfound.mydomain.org/invalid-site.html [P,L]

Итак, динамический хост теперь будет проверять наличие каталога сайта перед тем, как передать из него контент, и либо перенаправит, либо проксирует пользователя на удобную страницу объяснения. Похоже, такое поведение соответствует вашим потребностям?

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

RewriteEngine On
# If there's no directory where it should be for this host..
RewriteCond /var/www/vhosts/%{HTTP_HOST} !-d
# (or a symlink, we'll be ok with those too)
RewriteCond /var/www/vhosts/%{HTTP_HOST} !-l

# Then, we'll redirect the user to our friendly "no site here" page..
# Note that I'm setting it to 302 so that they won't be cached, since
# you might trigger this accidentally just before a new site goes live..
RewriteRule ^ http://sitenotfound.mydomain.org/invalid-site.html [R=302,L]

# Or if you wanted to proxy instead of redirecting, use this instead:
#RewriteRule ^ http://sitenotfound.mydomain.org/invalid-site.html [P,L]

Итак, динамический хост теперь будет проверять наличие каталога сайта перед тем, как передать из него контент, и либо перенаправит, либо проксирует пользователя на удобную страницу объяснения. Похоже, такое поведение соответствует вашим потребностям?

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

RewriteEngine On
# If there's no directory where it should be for this host..
RewriteCond /var/www/vhosts/%{HTTP_HOST} !-d
# (or a symlink, we'll be ok with those too)
RewriteCond /var/www/vhosts/%{HTTP_HOST} !-l

# Then, we'll redirect the user to our friendly "no site here" page..
# Note that I'm setting it to 302 so that they won't be cached, since
# you might trigger this accidentally just before a new site goes live..
RewriteRule ^ http://sitenotfound.mydomain.org/invalid-site.html [R=302,L]

# Or if you wanted to proxy instead of redirecting, use this instead:
#RewriteRule ^ http://sitenotfound.mydomain.org/invalid-site.html [P,L]

Итак, динамический хост теперь будет проверять наличие каталога сайта перед тем, как передать из него контент, и либо перенаправит, либо проксирует пользователя на удобную страницу объяснения. Похоже, такое поведение соответствует вашим потребностям?

1
ответ дан 3 December 2019 в 13:06

Теги

Похожие вопросы