Nginx переписать поймать все возможные идентификаторы - PullRequest
0 голосов
/ 04 ноября 2010

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

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

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

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

А с

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 04 ноября 2010

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

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

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

Или, что лучше:

try_files $uri /index.php?q=$uri
...