Да, вы МОЖЕТЕ перенаправить URL-адреса в локальные папки в Windows 10.

Вопрос или проблема

Я успешно настроил MAMP на Windows 10. Я хочу работать с сайтами WordPress локально и вносить изменения на живом сайте через Git. (Обновление: я сам ответил на свой вопрос ниже.)

  1. Я понимаю, что общим рабочим процессом является выполнение SQL-запроса для редактирования всех абсолютных ссылок с www.mysite.org/internal-link/sample.html на localhost/internal-link/sample.html и обратно, но разве не безопаснее (а) не трогать базу данных и (б) быстрее просто закомментировать/раскомментировать несколько строк в .conf файле каждый раз, когда работаешь с сайтом?

  2. Предположим, что ответ на вопрос (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.

Оцените материал
Добавить комментарий

Капча загружается...