У меня есть веб-сайт Apache2 с несколькими разными ресурсами, все они установлены непосредственно под DocumentRoot:
ЦЕЛЬ: я бы хотел, чтобы пользователи переходили в WordPress автоматически, набрав http://example.com
, вместо того http://example.com/wordpress
. Но мне также нужно иметь доступ к другим ресурсам из корня. Например, URL http://example.com/mycodeigniterapp
по-прежнему нужно работать как есть?
В: Какой хороший способ «скрыть» слово «wordpress» из URL-адреса, не «нарушая» какие-либо существующие функции?
Заранее спасибо!
Либо вы используете папки для различения приложений, как сейчас, либо вы можете использовать разные URL-адреса, например
Я не стал бы пытаться помещать файлы разных приложений в одну корневую папку и не пытался бы создавать сложные правила перезаписи. Это не удастся, поскольку разные приложения будут иметь одинаковые имена файлов (например, у всех будут index.php и config.php). Кроме того, это значительно усложнит обновление приложения.
Редактировать:
Это означало бы создание нескольких записей DNS A, указывающих на один и тот же IP-адрес - тот, который слушает ваш сервер. Далее вы создадите несколько VirtualHost
заявления, каждое со своими DocumentRoot
. Примером может быть:
<VirtualHost *:80>
ServerName sql.example.com
DocumentRoot /var/www/html/phpmyadmin
# ...
</VirtualHost>
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/html/wordpress
# ...
</VirtualHost>
Изменить 2:
Что касается WordPress, возможно, эта ссылка может быть полезна для перемещения вашего сайта WordPress из подкаталога в корень (под) домена: https://askwpgirl.com/move-wordpress-from-subdirectory-to-root-directory/
что находится в вашем веб-корне, если вы перейдете в http://example.com ? Обычно это индексная страница по умолчанию, например index.php или index.html. Или вы можете создать такую страницу и использовать ее, или вы можете использовать файл .htaccess и mod_rewrite.
Итак, в порядке легкого / быстрого:
Используя перенаправление из файла index.php (создайте или отредактируйте index.php в http://example.com). Это работает, только если PHP настроен на вашем сервере, но, очевидно, он предназначен для работы вашего wordpress. Создайте файл index.php с помощью:
<?php header('Location: http://example.com/wordpress/'); ?>
Как мы это делали в 1990-е годы - супер-старая школа: в индексном файле HTML по умолчанию используйте тег META Refresh. PHP не требуется. Создайте http://example.com/index.html и отредактируйте:
<html>
<head><meta http-equiv="refresh" content="0;URL=http://example.com/wordpress/"></head>
<body>If your browser does not refresh you, <a href="/wordpress/">Click here</a>.</body>
</html>
Использование .htaccess и mod_rewrite - Отредактируйте файл ".htaccess" в корневом веб-каталоге example.com. Если его нет, создайте новый файл с именем .htaccess. Добавить:
RewriteEngine On
RewriteRule ^ http://example.com/wordpress [L,R=301]
Примечание: если №3 заставляет сайт показывать Белый экран смерти (WSOD) на каждой странице, вам, вероятно, нужно включить mod_rewrite с помощью sudo a2enmod rewrite && sudo apachectl restart
. Или, если вы не знаете, что означает sudo, попробуйте метод 1 или 2.
Установите корень документа в каталог WordPress.
DocumentRoot /path/to/webroot/wordpress/
Конечно, это сделает все остальные подкаталоги недоступными. Чтобы исправить это, у вас есть две возможности:
Вариант 1 требует меньше работы по настройке, но создает беспорядок в файловой системе. Сама WordPress не заботится о том, есть ли сторонние файлы и каталоги, смешанные с файлами WordPress, но вам нужно будет знать, какие файлы там не принадлежат.
Вариант 2 более чистый, но вам придется создавать псевдоним в конфигурации apache каждый раз, когда вы добавляете что-то новое:
Alias /phpmyadmin /path/to/webroot/phpmyadmin
Alias /mycodeigniterapp /path/to/webroot/mycodeigniterapp
Примечание: это сначала приведет к разрыву ссылок WordPress. WordPress хранит абсолютные URL-адреса в базе данных, и каждое сообщение по-прежнему будет ссылаться на /wordpress/...
. Чтобы исправить это, вам просто нужно войти в систему, перейти к настройкам постоянной ссылки и нажать на Save
кнопка. Это обновит все постоянные ссылки в базе данных.
См. Документацию Перемещение WordPress по этой теме.