nginx: переписать PHP не работает

У меня установлен Suffix Proxy, и я использую следующую перезапись с использованием подстановочного имени субдомена DNS:

location / {
     if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php last;
        break;
     }
}

Мой суффикс прокси имеет следующий формат URL: (субдомен и / или домен + расширение домена до прокси).proxy.org/(request-uri для прокси)

У меня есть этот PHP-код в моем index.php:

if(preg_match('#([\w\.-]+)\.example\.com(.+)#', $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], $match)) {
    header('Location: http://example.com/browse.php?u=http://'.$match[1].$match[2]);
    die;
}

Но при запросе страницы с расширением.php я получаю ошибку 404 not found:

http://www.php.net.proxy.org/docs.php - HTTP/1.1 404 Not Found
http://www.utexas.edu.proxy.org/learn/php/ex3.php - HTTP/1.1 404 Not Found

Но все остальное работает (также работает index.php):

http://php.net.proxy.org/index.php - HTTP/1.1 200 OK
http://www.php-scripts.com.proxy.org/php_diary/example2.php3 - HTTP/1.1 200 OK
http://www.utexas.edu.proxy.org/learn/php/ex3.phps - HTTP/1.1 200 OK
http://www.w3schools.com.proxy.org/html/default.asp - HTTP/1.1 200 OK

У кого-нибудь есть ответ? Я не знаю, почему он не работает, на Apache он работает нормально.

Заранее спасибо.

Я удалил местоположение, и теперь оно работает отлично:

if (!-e $request_filename) {
     rewrite ^(.*)$ /index.php last;
     break;
}

1 ответ

Я не мог полностью понять ваш вопрос. Но, похоже, вы можете добавить try_files в свой блок местоположения, что-то вроде этого...

место нахождения / {
     if (!-e $request_filename) {
        переписать ^(.*)$ /index.php last;
        перерыв;
     }

     try_files $ uri = 404;
} 

Надеюсь, это поможет.

Другие вопросы по тегам