mio php app rileva automaticamente che una richiesta di rotte per l'area di amministrazione tramite la parola chiave gestiscono nel cioè url:Nginx posizione del blocco di URL dinamico segmento
Questa directory in realtà non esiste.
La richiesta deve essere instradata al file index.php che si trova sulla richiesta iniziale da gestire/ma qualsiasi collegamento produce un "Nessun file di input specificato". errore in nginx.
Ho bisogno di un blocco di posizione che funzioni su un segmento di URL inesistente.
ho cercato ri-scrittura per il file di indice principale in questo modo:
location /manage {
try_files $uri $uri/ @back;
}
location @back {
rewrite ^/manage/(.*)$ /index.php?_route_=$1 last;
}
che funziona bene per Apache ma in Nginx questo produce un errore 500.
Qualsiasi suggerimento sarebbe apprezzato.
UPDATE:
configurazione completa richiesto nei commenti:
upstream myapp {
server unix:/srv/users/serverpilot/run/myapp.php-fpm.sock;
}
server {
listen 80;
server_name my.domain.com;
root /srv/users/serverpilot/apps/myapp/public;
index index.php index.html index.htm;
access_log /srv/users/serverpilot/log/myapp/myapp_nginx.access.log;
error_log /srv/users/serverpilot/log/myapp/myapp_nginx.error.log;
location /asset {
rewrite ^/asset/(.*)$ /public/asset/$1 break;
}
location /image {
rewrite ^/image/(.*)$ /public/image/$1 break;
}
location/{
try_files $uri $uri/ @front;
}
location @front {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass myapp;
}
}
UPDATE: registro
Errore richiesto.
15/05/14 10:42:04 [error] 32704#0:
*5 FastCGI sent in stderr:
"Unable to open primary script: /srv/users/username/apps/myapp/public/manage/index.php (No such file or directory)"
while reading response header from upstream, client: 129.349.569.789,
server: myapp.example.com,
request: "GET /manage/index.php?route=common/forgotten HTTP/1.1",
upstream: "fastcgi://127.0.0.1:9002",
host: "myapp.example.com",
referrer: "http://myapp.example.com/manage"
UPDATE:
richiesto .htaccess
di file:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule ^asset/(.*)$ public/asset/$1 [L,QSA]
RewriteRule ^image/(.*)$ public/image/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|txt|html|woff|ttf|eot|svg|css|js)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
</IfModule>
E dove portano questi collegamenti? –
BTW, se sei sicuro che la directory 'manage' non esiste, puoi saltare' try_files' e mettere riscrittura direttamente nella prima posizione –
Tutti gli URL con la parola chiave 'manage' route per i controller admin tramite index.php. E sì, sono sicuro che la directory non esiste. –