Моя настройка Nginx в настоящее время имеет это:
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ https://domain.com/index.php?id=$1 redirect;
}
}
В основном для несуществующих страниц (404) он перенаправляет пользователя на домашнюю страницу. Но теперь у меня есть блог на WordPress по адресу https://domain.com/blog/, но любые элементы WordPress, например. https://domain.com/blog/test также были перенаправлены на домашнюю страницу. Интересно, как это исправить?
Если ваш блог находится на http://yourblog.com/blog
, то вам нужно установить директиву для этого пути, если вы ранее не указали это как свой root
каталог (например, root /var/www/html/blog
).
Вам также следует НЕ использовать if
заявления. Это распространенная ошибка NGiNX.. Использовать try_files
вместо.
location /blog {
try_files $uri $uri/ /index.php?$args;
}
Если вам не нужны подкаталоги /blog
для перенаправления вы можете ограничить перенаправление только этим конкретным каталогом, используя =
в директиве расположения.
Например.
location = /blog {
try_files $uri $uri/ /index.php?$args;
}
Если вы хотите, чтобы он искал что-нибудь с надписью "блог" и примените такое же перенаправление, вы бы использовали /
перед и after, чтобы использовать его как регулярное выражение.
Например.
location /blog/ {
try_files $uri $uri/ /index.php?$args;
}
Более подробную информацию о директиве местоположения можно найти ВОТ.
На основании вопроса / ответа Вот и документация для location
Вот:
нет синтаксиса для НЕ соответствия регулярному выражению. Вместо этого сопоставьте целевое регулярное выражение и назначьте пустой блок, а затем используйте location /, чтобы сопоставить что-либо еще.
Я бы сказал, что вам нужна директива местоположения, которая соответствует /blog/
и с пустым блоком, чтобы предотвратить перенаправление, что-то вроде
location /blog {
}