Вопрос или проблема
У меня установлена mediawiki на Ubuntu.
У меня применена следующая запись DNS:
A @ -> xx.xx.xx.xx
Мой файл .conf содержит следующее:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
</VirtualHost>
Когда я перехожу на example.com в браузере, отображается экран Apache “It Works!”, а в адресной строке example.com
.
Я изменил файл .conf на следующий и перезапустил apache2:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/mediawiki
</VirtualHost>
Теперь при переходе на example.com в браузере происходит перенаправление на главную страницу вики, но адресная строка показывает xx.xx.xx.xx/mediawiki/index.php/Main_Page
.
Как сделать, чтобы отображалось example.com/mediawiki/index.php/Main_Page
вместо этого?
перенаправляет на
Скорее всего, перенаправление выполняется самим веб-приложением.
(Вместо относительного URL, такого как /mediawiki/index.php/Main_Page
, вас перенаправляют на полный URL, например http://как-либо/mediawiki/index.php/Main_Page
.)
Отредактируйте ваш LocalSettings.php
и установите $wgServer
на URL, который вы хотите использовать.
-Обновите MediaWiki LocalSettings.php
$wgServer
$wgServer = “http://example.com”;
-Настройка DNS
A @ -> xx.xx.xx.xx
-
Проверьте конфигурацию Apache
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/mediawiki<Directory /var/www/html/mediawiki>
Options FollowSymLinks
AllowOverride All
Require all grantedУбедитесь, что AllowOverride All включен для каталога, чтобы файлы
.htaccess вступили в силу (важно для MediaWiki).
-Перезагрузите Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
-Включите перезапись URL
sudo a2enmod rewrite
-Создайте или обновите файл .htaccess в директории mediawiki, чтобы включить:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xx.xx.xx.xx
RewriteRule (.*) http://example.com/$1 [R=301,L]
-По желанию: Настройка HTTPS
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html/mediawiki
SSLEngine on
SSLCertificateFile /path/to/certificate.crt
SSLCertificateKeyFile /path/to/private.key
<Directory /var/www/html/mediawiki>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
sudo systemctl restart apache2
Ответ или решение
Чтобы решить проблему отображения IP-адреса в адресной строке вместо доменного имени в установке MediaWiki, выполненной на Ubuntu, важно последовательно проверить и настроить несколько компонентов. Речь идет о корректной настройке конфигурационных файлов Apache, MediaWiki и других связанных настройках системы. Давайте разберёмся, как это можно сделать, используя шаблон TEA (Theory, Example, Application).
Теория
Когда веб-приложение, такое как MediaWiki, выполняет перенаправление, оно должно делать это с использованием правильного доменного имени вместо IP-адреса. Перенаправления могут быть как непосредственной настройкой внутри самой MediaWiki, так и результатом неправильно настроенных конфигураций Apache, DNS, или .htaccess.
Ключевые аспекты настройки:
-
Конфигурация Apache: Доменное имя должно быть четко указано в директиве
ServerName
. Настройки каталога должны позволять использование.htaccess
, что означает необходимость указатьAllowOverride All
. -
Настройка MediaWiki: Переменная конфигурации
$wgServer
вLocalSettings.php
должна быть установлена на правильное доменное имя, что гарантирует, что MediaWiki будет использовать его в своих размещённых URL. -
Перенаправление и переписывание URL: Через
.htaccess
можно настроить автоматическую замену IP-адреса на доменное имя. Это достигается с использованием модуляmod_rewrite
в Apache. -
DNS-записи: Убедитесь, что DNS-записи правильно указывают на ваш IP-адрес.
Пример
Представьте, что у вас уже есть базовая конфигурация Apache и MediaWiki:
-
Конфигурация Apache:
<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html/mediawiki <Directory /var/www/html/mediawiki> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Здесь важно, чтобы
ServerName
был установлен какexample.com
. -
Конфигурация MediaWiki (LocalSettings.php):
$wgServer = "http://example.com";
Это гарантирует, что все внутренние ссылки, создаваемые MediaWiki, будут использовать доменное имя вместо IP-адреса.
-
Конфигурация .htaccess:
В файловой системе, в каталоге MediaWiki (например,
/var/www/html/mediawiki
), создайте или обновите файл.htaccess
:RewriteEngine On RewriteCond %{HTTP_HOST} ^xx\.xx\.xx\.xx RewriteRule (.*) http://example.com/$1 [R=301,L]
Эти правила позволяют перенаправлять все запросы, адресованные непосредственно IP-адресу, на ваше доменное имя.
-
Активация модуля переписывания URL:
Убедитесь, что модуль переписывания URL активирован в Apache:
sudo a2enmod rewrite sudo systemctl restart apache2
-
DNS-записи:
Убедитесь, что ваша действующая A-запись корректно указывает домен
example.com
на IP-адрес вашего сервера.
Применение
Теперь, имея настройку в теории и примеры корректно работающих конфигураций, эти принципы могут быть легко применены к вашему серверу.
-
Перепроверка конфигурационных файлов: Убедитесь в правильности всех перечисленных выше конфигураций, это включает в себя проверку их актуальности.
-
Тестирование страницы: После внесения изменений очистите кэш браузера и повторно проверьте открытие
example.com
. Важно удостоверится, что отображается именно доменное имя в адресной строке. -
Службы безопасности: Для повышения безопасности рассмотрите возможность введения HTTPS. Это можно сделать, настроив VirtualHost для 443 порта и применив SSL-сертификаты.
-
Мониторинг и отладка: Используйте логи Apache (
/var/log/apache2/error.log
и/var/log/apache2/access.log
), чтобы следить за возможными ошибками и проблемами при доступе к сайту.
Такой пошаговый подход поможет вам успешно настроить отображение доменного имени вместо IP в вашей системе. Это не только улучшит пользовательский опыт, но и повысит профессиональную презентацию вашего веб-ресурса.