Назад | Перейти на главную страницу

Ошибка 404 подпапки правила перезаписи Nginx

Я не могу понять, как мне настроить мой файл index.php с правилами перезаписи Nginx, чтобы он работал, как в примере ниже.

Если я захожу по URL-адресу, он дает мне ошибку 404, не найденную instad echo 'hello'.

URL:

http://www.example.com/directory/sub-directory/

/ sub-directory / из указанного URL-адреса на самом деле не является реальным каталогом внутри / directory /. Если я захожу по URL-адресу, я получаю ошибку 404 - это нормально, но / sub-directory / - удобный URL (без запроса? Аргумент = значение).

/ sub-directory / не является фиксированным значением (в этом примере ниже), это может быть / sub-directory-new / - зависит.

Итак, для любого значения в / value / after / directory / в URL-адресе, как я могу не получить ошибку 404 при посещении такого URL-адреса?

Index.php в / каталог /:

$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$wanted = "sub-directory";

$tokens = explode('/', $actual_link);
$result =  $tokens[sizeof($tokens)-2]; // result is "sub-directory"
if($wanted == $result) {
    echo "hello";
}

Nginx:

location /directory {
    try_files $uri $uri/ /directory/$uri;
    error_page 404 =200 /directory
}

Следует ли мне добавить некоторые аргументы в пользу правила, например: местоположение / каталог $ 1? Если да, то какой и как заставить работать?

У кого-нибудь есть идеи?

Спасибо за обмен и информацию!

Обычный способ создания дружественных URL-адресов в nginx выглядит следующим образом:

location /directory {
    try_files $uri $uri/ @rewrites;
}

location @rewrites {
    rewrite ^ /directory/index.php;
}

Эта конфигурация предполагает, что ваш root директива указывает на каталог, в котором /directory расположен.

Итак, здесь nginx сначала попытается, если файл или каталог существует в реальной файловой системе. Если файл не существует, он перенаправляет запрос в ваш файл PHP. Естественно, вам необходимо правильно настроить блок обработки PHP в nginx.