2017-11-19 14 views
1

Ich habe eine einfache PHP-Datei erstellt, um Informationen aus meiner MYSQL-Datenbank abgerufen anzuzeigen. Gleich danach benutze ich eine Rewrite-Regel in Nginx, um den Link seo-freundlich zu machen und die .php-Datei, die ihn holt, zu maskieren.Nginx Block Zugriff auf PHP-Dateien

Ex: http://localhost/myfile.php?seo=how-to-install-linux Nach Rewrite-Regel die ich kann auf sie zugreifen möchten:

http://localhost/how-to-install-linux 

Meine Rewrite-Regeln sind:

location/{ 
rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo=$1 last; 
rewrite ^/(.*)/$ /$1 permanent; <- just to block trailing slash 
} 

Mein Problem ist, dass ich möchte auch einen direkten Zugang sperren zu meine PHP-Datei und ich möchte nur die SEO-freundliche URL zu arbeiten.

Diese Regel blockiert den vollständigen Zugriff auf meine PHP-Datei, einschließlich über SEO Friendly URL. Gibt es eine Möglichkeit, es für die seo-freundliche Version mit NGINX arbeiten zu lassen? Meine anderen Einstellungen sind:

location ~ \.php$ { 
try_files $uri =404; 
include fcgi.conf; 
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock; 

} 

ich nur Nginx verwenden, installiert kein Apache.

Antwort

2

Sie können die Direktive internal verwenden, um den direkten Zugriff auf einen Speicherort zu verhindern. Details finden Sie unter this document.

Zum Beispiel:

location = /myfile.php { 
    internal; 
    include fcgi.conf; 
    fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock; 
} 
+0

Es funktioniert! Danke, Mann. Ich habe bei Google nach grundlegenden Suchbegriffen gesucht, aber nichts nützliches gefunden. Noch einmal Danke ! – Newb90

Verwandte Themen