- 12, May 2024
- #1
Привет! Я любитель Apache, много узнал о конфигурации Apache, но до сих пор не знаком с функцией «Перенаправление».
Мы размещаем 2 домена «perrypedia.de» и «perrypedia.proc.org», последний — это старое доменное имя, которое необходимо перенаправить на новое.
В рамках perrypedia.de работают две вики: test.perrypedia.de и www.
перрипедия.
де. Кроме того, все запросы без SSL должны быть перенаправлены на https.
Для этого я создал четыре файла конфигурации с пятью Vhosts.
Работают отлично и стабильно (... за одним исключением, о котором расскажу позже).
Убунту 18.04, Апач 2.4.29
Тествики, http:
Код (разметка): Testwiki, https:
Код (разметка): Продуктивный, http:
Код (разметка): Продуктивный, https:
Код (разметка): Правила редиректа и перезаписи по большей части не мои изобретения, а собраны из нескольких веб-ресурсов.
Почти все в порядке.
вот проблема, с которой я не могу справиться.
Когда я закрываю продуктивный сайт (a2dissite prod-http и https), Testwiki немедленно перехватывает ВСЕ http-запросы, даже для продуктивного сайта.
И наоборот (остановка Testwiki приводит ВСЕ http-test-URL к вики-версии продукта). Похоже, это происходит из-за неспецифического перенаправления 301 "/"... Я думал, что Vhost захватывает только URL-адрес, соответствующий имени или псевдонимам его сервера, но теперь я сомневаюсь.
Я хочу научиться и понять, что я делаю не так.
У кого-нибудь есть ценная подсказка?
В рамках perrypedia.de работают две вики: test.perrypedia.de и www.
перрипедия.
де. Кроме того, все запросы без SSL должны быть перенаправлены на https.
Для этого я создал четыре файла конфигурации с пятью Vhosts.
Работают отлично и стабильно (... за одним исключением, о котором расскажу позже).
Убунту 18.04, Апач 2.4.29
Тествики, http:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.perrypedia.de
ServerAlias perrypedia.de
DocumentRoot /var/www/prod
RewriteEngine on
# add www
RewriteCond "%{HTTP_HOST}" "!^www\." [NC]
RewriteCond "%{HTTP_HOST}" "!^$"
RewriteRule "^/?(.*)" "https://www.%{HTTP_HOST}/$1" [L,R,NE]
# Short url
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/mediawiki/index.php [NE]
# Redirect / to main page
RewriteRule ^/*$ %{DOCUMENT_ROOT}/mediawiki/index.php [NE]
# Cache
RewriteCond %{HTTP_COOKIE} !UserID=
RewriteCond %{QUERY_STRING} !.
RewriteCond %{THE_REQUEST} ^GET\x20/wiki/([^\x20/]+)\x20HTTP
RewriteCond %{DOCUMENT_ROOT}/mediawiki/cache/%1.html -s
RewriteRule ^wiki/(.+)$ /mediawiki/cache/%1.html [B,L,NS]
(... a lot more directives: logging, SSL certificate, bandwidth, AWStats, directory access ...)
</VirtualHost>
<VirtualHost *:443>
ServerName www.perrypedia.proc.org
ServerAlias perrypedia.proc.org
(... SSL ...)
Redirect 301 "/" "[URL='https://lumtu.com/yti/ZuEEuZGVodHRwczovL3BlcnJ5cGVkaWkVG']https://www.perrypedia.de[/URL]"
</VirtualHost>
</IfModule>
Код (разметка): Testwiki, https:
<VirtualHost *:80> ServerName www.perrypedia.de ServerAlias perrypedia.de ServerAlias www.perrypedia.proc.org ServerAlias perrypedia.proc.org Redirect 301 "/" "[URL='https://lumtu.com/yti/ZAZZAZS9odHRwczovL3BlcnJ5cGVkaWEuWak']https://www.perrypedia.de/[/URL]" </VirtualHost>
Код (разметка): Продуктивный, http:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName test.perrypedia.de DocumentRoot /var/www/test RewriteEngine on RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/mediawiki/index.php [NE] RewriteRule ^/*$ %{DOCUMENT_ROOT}/mediawiki/index.php [NE] (... a lot more directives: logging, SSL certificate, bandwidth, directory access ...) </VirtualHost> </IfModule>
Код (разметка): Продуктивный, https:
<VirtualHost *:80> ServerName test.perrypedia.de Redirect 301 "/" "[URL='https://lumtu.com/yti/Zk55kZS9odHRwczovL3Rlc3QucGVycnlwZWRpYSpRW']https://test.perrypedia.de/[/URL]" </VirtualHost>
Код (разметка): Правила редиректа и перезаписи по большей части не мои изобретения, а собраны из нескольких веб-ресурсов.
Почти все в порядке.
вот проблема, с которой я не могу справиться.
Когда я закрываю продуктивный сайт (a2dissite prod-http и https), Testwiki немедленно перехватывает ВСЕ http-запросы, даже для продуктивного сайта.
И наоборот (остановка Testwiki приводит ВСЕ http-test-URL к вики-версии продукта). Похоже, это происходит из-за неспецифического перенаправления 301 "/"... Я думал, что Vhost захватывает только URL-адрес, соответствующий имени или псевдонимам его сервера, но теперь я сомневаюсь.
Я хочу научиться и понять, что я делаю не так.
У кого-нибудь есть ценная подсказка?