Ngin, url: / search = executa php / search.php e url: / my = php my.php

1

Por favor me ajude a configurar o Nginx:

1) Eu tenho um número de scripts php, e eu quero executá-los com sua URL sem ".php" Por exemplo,

  • url / search - > execute script "/search.php"
  • url / bookmark - > execute o script "/bookmarks.php"
  • url / - > execute script "/index.php"

2) 404 / asdfasdfasdf - qualquer url, que não corresponde a nenhum local especificado e não leva a arquivo estático (imagem, css) deve ser executado /not-found.php com preserving / asdfasdfasdf em URL

Seção atual do servidor root / var / www / site / public; index index.php;

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;         
}

location ~ \.(ico|css|js|jpe?g|png)$ {
    expires 7d;
    add_header Pragma public;
    add_header Cache-Control "public,  must-revalidate, proxy-revalidate";
}
    
por Artem Chernovol 24.04.2016 / 18:26

2 respostas

0

Eu fiz isso usando reescrever

location /abcd {
  rewrite ^/abcd\/([0-9a-zA-Z_\-\s\+]+)\/([0-9a-zA-Z_\-\s\+\(\)\.]+)$ /efgh.php?action=whatever;
}
location /xyz {
  rewrite ^/yxz\/([0-9a-zA-Z_\-\s\+]+)$ /rst.php?action=whatever;
}

Há provavelmente uma maneira mais genérica, mas se você tiver um número limitado de URLs, isso pode funcionar. Isso pode enviar você no caminho certo. Eu provavelmente olharia para expressões regulares, grupos de captura e expressões.

    
por 25.04.2016 / 04:41
0

Existem alguns padrões comuns para implementar o PHP sem extensão. Um desses padrões é assim:

index index.php;

location / {
    try_files $uri $uri/ @php;
}
location @php {
    rewrite ^ $uri.php last;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
    
por 25.04.2016 / 23:33

Tags