![nginx 中的重写规则](https://linux22.com/image/615204/nginx%20%E4%B8%AD%E7%9A%84%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99.png)
我正在使用 php-fpm 将 PHP 应用程序从 Apache 移至 Nginx。我几乎已经完成了,除了一个我无法在 Nginx 中执行的重写指令。以下是我需要移植的 Apache 配置的摘录:
# Handle alianza.quehambre.cl
RewriteCond %{HTTP_HOST} ^alianza\.quehambre\.cl [NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-l
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(api|get)/(.*)
RewriteRule ^(.*)$ /index.php/get/$1 [L,QSA]
完整的 Nginx 配置如下:这个要点,包括我目前编写上述规则但未奏效的尝试。
答案1
这应该可以解决问题:
server {
server_name alianza.quehambre.cl;
location / {
location ~ ^/(api|get)/(.*) {
# Whatever should happen at this point...
}
try_files $uri /index.php/get/$request_uri =404;
}
}
答案2
尝试一下这个:
location ~ (api|get)/(.*) {
}
location / {
if ($http_host ~* "^alianza\.quehambre\.cl"){
rewrite ^(.*)$ /index.php/get/$1 break;
}
}