#wordpress #apache #.htaccess #redirect
#wordpress #апач #.htaccess #перенаправлять
Вопрос:
Мне просто интересно, какое приложение отвечает за перенаправление URL-адресов на сайте WordPress.
На моем сайте есть реальная папка /загрузки/файлы/. Теперь я обнаружил, что при доступе к 404 ошибкам https://www.datanumen.com/downloads/files/sitemap.xml, поэтому я хочу перенаправить URL на https://www.datanumen.com/sitemap.xml
Я пробую несколько методов:
- Добавьте следующее перенаправление в .htaccess в корневой папке:
Redirect 301 /downloads/files/sitemap.xml https://www.datanumen.com/sitemap.xml
Но это не работает.
- Установите плагин перенаправления и настройте перенаправление с
/downloads/files/sitemap.xml
Для
/sitemap.xml
Но все равно не получается.
Поэтому мне любопытно, что на сайте WordPress, когда я ввожу URL-адрес, будет ли URL-адрес сначала обработан системой WordPress(в котором метод 2 вступит в силу) или сначала обработан Apache(в котором метод 1 вступит в силу)? Почему оба метода не работают?
Ответ №1:
Apache/ .htaccess
перехватывает запрос первым. Именно Apache отправляет запрос на WordPress/PHP.
Однако, глядя на HTTP-ответ в браузере…
cf-cache-status: HIT server: cloudflare
Ответ 404, который вы видите, поступает из кэша вашего CDN. Запрос даже не доходит до вашего сервера приложений, чтобы обработать перенаправление.
/downloads/files/sitemap.xml
ОДНАКО являются ли эти запросы законными для вашего XML-файла карты сайта? Это кажется маловероятным. Итак, я бы задался вопросом, нужно ли перенаправлять эти запросы в первую очередь?
Обратите внимание, что /sitemap.xml
само перенаправление на /wp-sitemap.xml
so /sitemap.xml
в любом случае не кажется правильной целью.
Комментарии:
1. apache не отправляет запросы на wordpress/php
2. @MikeMoy Именно Apache отправляет запрос на
index.php
передний контроллер WordPress при использовании симпатичных постоянных ссылок.3. index.php это просто файл, расположенный на SSD или жестком диске, apache ищет файл, как только Apache находит файл, apache обрабатывает файл PHP, выполняя код PHP непосредственно внутри Apache, затем Apache отправляет обработанный index.php файл клиенту, который его запросил
4. Основываясь на моем тесте, если структура папок(например, /загрузки/файлы/ в этом примере) существует, WordPress не будет отвечать за перенаправление. В противном случае WordPress возьмет на себя ответственность.
5. @alancc Это из-за директив Apache в
.htaccess
. Директивы Apache предотвращают маршрутизацию запроса через WordPress при прямом запросе физического файла или каталога. Как я уже говорил выше… «Apache/.htaccess сначала перехватывает запрос.». Однако, если вы используете CDN (как вы, по-видимому, используете) или прокси-сервер кэширования переднего плана, запрос может даже не достичь вашего серверного приложения для этих запросов (как показано выше). Однако теперь я вижу, что кэш CDNs очищен, и перенаправление работает.
Ответ №2:
клиент отправляет ip-пакет хосту и указывает, что данные в ip-пакете относятся к определенному номеру порта, apache прослушивает определенные номера портов, как и большинство сетевых приложений,если ip-пакет предназначен для одного из номеров портов,которые прослушивает apache,операционная система перенаправит ip-пакет apache,затем apache может увидеть запрос файла,т. е. html, pdf, jpeg и т. Д. Затем apache извлекает этот файл, изображение и т. Д. С серверного носителя, т. е. ssd или жесткого диска, если файл содержит код php, apache проанализирует сам php перед отправкой файла клиенту.
- оборудование для серверного компьютера,т. е. процессор,графический процессор,оперативная память, память
- операционная система, т. е. linux
- серверное приложение, чем запускаемое в операционной системе, т. е. apache
- php файлы, т. е. wordpress
Таким образом, в основном Apache сначала действует, т. е. файлы конфигурации сервера, затем, когда Apache анализирует php-файлы wordpress, php — скрипт выполняется во-вторых.