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; }
Надеюсь, это поможет.