Nginx Rewrite перехватывает все возможные идентификаторы

Привет, ребята, у меня большой веб-сайт, структура URL-адресов страниц с контентом: site.com/T8siBD.

Теперь файл, который в настоящее время перехватывает все возможные страницы ID, называется index.php.

Я запускаю nginx, и моя страница с ошибкой 404 настроена как index.php.

Так что все будет отправлено на index.php (если его там нет)

И с

$ex               = explode('/', $_SERVER["REQUEST_URI"]); 
$item_key     = isset($ex[1]) ? addslashes(htmlspecialchars($ex[1])) : ''

Я могу красиво получить удостоверение личности.

Это отлично работает в браузере, но если вы хотите получить любую из моих страниц с контентом, это выдаст вам ошибку 404, потому что, в конце концов, Nginx считает, что «файл» не существует.

Я хотел бы обойти эту страницу с ошибкой 404.

Я думал об использовании чего-то вроде:

rewrite ^/(.*)? /index.php?q=$1 last;

Но когда я это делаю, он не показывает ни одного из «существующих» файлов на моем диске и в основном пересылает даже изображения и т. д. в index.php.

Кто-нибудь знает хороший способ переписать это правило?


person Mr.Boon    schedule 03.11.2010    source источник


Ответы (1)


Будет хорошо, если вы разместите там полную конфигурацию NGINX...

Вы можете попробовать это:

if( !-f $request_filename ){
    rewrite ^/(.*)? /index.php?q=$1 last;
}

Или, лучше:

try_files $uri /index.php?q=$uri
person seriyPS    schedule 03.11.2010
comment
Спасибо! Я использовал первый вариант. - person Mr.Boon; 12.11.2010