Вопрос или проблема
Я успешно настроил MAMP на Windows 10. Я хочу работать с сайтами WordPress локально и вносить изменения на живом сайте через Git. (Обновление: я сам ответил на свой вопрос ниже.)
-
Я понимаю, что общим рабочим процессом является выполнение SQL-запроса для редактирования всех абсолютных ссылок с www.mysite.org/internal-link/sample.html на localhost/internal-link/sample.html и обратно, но разве не безопаснее (а) не трогать базу данных и (б) быстрее просто закомментировать/раскомментировать несколько строк в .conf файле каждый раз, когда работаешь с сайтом?
-
Предположим, что ответ на вопрос (1) — да, как мне настроить файлы hosts, httpd.conf, httpd-vhosts.conf и .htaccess так, чтобы, если я открою “www.mysite.org” в браузере, он находил установку WP в соответствующей локальной папке (например, c:/MAMP/htdocs/mysite-dev/*), чтобы локальная версия WordPress “думала”, что это живой сайт?
Я запускаю PHP 7.4.1 в MAMP 4.2 (не pro). В настоящее время, когда я перехожу на localhost
в своем браузере с включенными серверами Apache и MySQL, он показывает сайт в c:/MAMP/htdocs/example1-local-folder-name/
. Если я перейду на https://example1.org/
, он открывает живой сайт. Моя конфигурация MAMP следующая:
drivers\etc\hosts:
127.0.0.1 example1.org
::1 example1.org
httpd.conf:
ServerName example1.org
DocumentRoot "C:\MAMP\htdocs"
<Directory /> # "default" конфигурация без изменений
Options FollowSymLinks ExecCGI
AllowOverride None
Order deny,allow
Allow from all
</Directory>
<Directory "C:\MAMP\htdocs"> # Это единственная строка, которую я изменил
Options Indexes FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example1.org
ServerAlias www.example1.org *.example1.org
DocumentRoot "C:/MAMP/htdocs/example1-local-folder-name"
ServerAdmin [email protected]
ErrorLog "example1-error_log"
CustomLog "example1-access_log" common
</VirtualHost>
.htaccess (в c:/MAMP/htdocs/example1-local-folder-name/):
# Я не знаю, что сюда поставить, кроме стандартного блока переписывания WP.
# Пока у меня этот файл закомментирован
Спасибо за любые подсказки и извинения, если этот вопрос уже задавали ранее.
По умолчанию Windows не разрешает DNS-перенаправление!
Не существует набора команд в файлах hosts, httpd.conf и т.д., которые заставили бы 127.0.0.1 sample.com
в вашем файле hosts перенаправлять все запросы на sample.com
на localhost.
(Сказав это, я экспериментировал с различными конфигурациями стандартной строки hosts и определил, что (на Win 10 и MAMP), если вы используете 127.0.0.1 sample-com
в файле hosts и ServerName sample-com
в файле httpd-vhosts.conf, вы получите локальный сайт, введя sample-com
в браузере (без слова “localhost”). Однако это бесполезно, так как все равно потребуется выполнять команды UPDATE, чтобы изменить живой URL во всей базе данных WordPress.)
Кроме того, если у вас есть 127.0.0.1 *.sample.com
в вашем файле hosts Windows, подстановочный знак ничего не делает — если у вас нет программы “помощника”, чтобы добавить функциональность к внутреннему TCP/IP движку.
Одна из таких программ-помощников здесь: https://coredns.io/ или https://github.com/coredns/coredns
Я опубликую обновление, когда у меня будет время протестировать эту настройку.
Благодарность этому посту за находку, которая привела меня к Coredns.
Ответ или решение
Да, вы можете перенаправить URL-адреса на локальные папки в Windows 10
Перенаправление доменных имен на локальные папки в Windows 10 возможно, и для успешной настройки вашего локального окружения вам потребуется внести изменения в несколько конфигурационных файлов. Давайте разберем этот процесс более детально.
1. Настройка файла hosts
В первую очередь, необходимо изменить файл hosts
, который расположен по пути C:\Windows\System32\drivers\etc\hosts
. Этот файл отвечает за разрешение доменных имен на локальные IP-адреса. Откройте файл в текстовом редакторе с правами администратора и добавьте следующие строки:
127.0.0.1 example1.org
::1 example1.org
Таким образом, когда вы будете вводить example1.org
в браузере, система будет перенаправлять запросы на ваш локальный сервер.
2. Конфигурация Apache
a. httpd.conf
Откройте файл httpd.conf
, который находится в директории установки вашего MAMP (обычно это C:\MAMP\bin\apache\apache2.x.x\conf\httpd.conf
). В этом файле нужно убедиться, что вы установили ServerName
как ваше доменное имя:
ServerName example1.org
DocumentRoot "C:\MAMP\htdocs"
Также убедитесь, что секция <Directory>
настроена правильно:
<Directory "C:\MAMP\htdocs">
Options Indexes FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
b. httpd-vhosts.conf
Далее вам нужно настроить виртуальные хосты в файле httpd-vhosts.conf
, который также находится в директории конфигурации Apache. Добавьте следующее:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example1.org
ServerAlias www.example1.org *.example1.org
DocumentRoot "C:/MAMP/htdocs/example1-local-folder-name"
ServerAdmin [email protected]
ErrorLog "example1-error_log"
CustomLog "example1-access_log" common
</VirtualHost>
Замените example1-local-folder-name
на имя вашей локальной папки с установленным WordPress.
3. Конфигурация .htaccess
Создайте или отредактируйте файл .htaccess
в директории вашего проекта (c:/MAMP/htdocs/example1-local-folder-name/
). Обычно для WordPress это стандартные настройки, которые включают правила для перезаписи URL. Вот пример стандартного блока:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Эти настройки позволят вашему локальному сайту функционировать так, как если бы он был в интернете.
4. Важные заметки
- Как упоминалось ранее, Windows не поддерживает DNS-перенаправление, поэтому не ожидайте полной универсальности от файла
hosts
. Для доменных имен с поддоменами может потребоваться использование сторонних инструментов, таких как CoreDNS, которые могут обрабатывать более сложные правила. - После внесения изменений не забудьте перезапустить сервер Apache для применения новых конфигураций.
- При работе с локальными копиями WordPress, изменяйте настройки и пути в базе данных с осторожностью. Если вы планируете использовать базу данных, стоит рассмотреть возможность изменения URL через SQL-запросы, как вы упомянули в начале.
Заключение
Теперь вы знаете, как перенаправлять URL-адреса на локальные папки в Windows 10. Это позволит вам разрабатывать и тестировать сайты на локальном сервере с использованием MAMP, без необходимости вносить изменения в базу данных. Такой подход существенно ускорит процесс разработки и тестирования ваших проектов WordPress.