2017-02-11 3 views
2

Ich benutze das Slimframework für meine Webanwendung & Ich habe alle URL-Anfragen, die auf einen Einstiegspunkt in 'index.php' verweisen, indem ich das folgende ReWrite in meiner .htaccess verwende:verhindern, dass 'index.php' mit Slimframework zugänglich ist

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [QSA,L] 

Alles ist in Ordnung, aber index.php durch die folgende Anfrage/route in der uRL noch zugänglich ist: /mywebsite/public/index.php was ich nicht will. Jetzt verstehe ich, dass seine die einzige Datei in meinem öffentlichen html-Ordner, aber ich will sie nicht zugänglich in der URL ... Wie kann ich umleiten, das zu einer falschen Route über

1) eine .htaccess ReWrite

Oder

2) einige slim Logik

???

Antwort

2

Sie könnten Ihre Regeln aktualisieren, wie so:

RewriteEngine on 
# Rewrite to index.php 
RewriteCond %{REQUEST_URI} !=/index.php 
RewriteRule^index.php [L,E=rewritten:1] 
# 404 any direct access of index.php 
RewriteCond %{ENV:rewritten} !=1 
RewriteCond %{ENV:REDIRECT_rewritten} !=1 
RewriteRule ^index\.php$ - [R=404,L] 

Ich entfernte den QSA-Flag, das war nicht nötig. Ich entfernte die Datei- und Verzeichnisprüfung, die unnötig war, und ersetzte sie durch eine Prüfung auf index.php, die schneller ist.

Ihre eigentliche Frage zu beantworten, ich ein 404 für jeden Versuch, zurückzukehren index.php direkt zuzugreifen. Eine andere Alternative wäre, zu etwas umzuleiten.

+0

Wie würde ich auf eine bestimmte Route umleiten? anstatt nur eine 404 verbotene Seite, d. h.: RewriteRule^- www.mysite.com/error/errors –

+0

Sie könnten einfach 'ErrorDocument 404/error/errors' verwenden, das als Fehlerseite dienen würde. Oder ich kann den Code aktualisieren, um darauf umzuleiten. Gib mir Bescheid. – SuperDuperApps

+0

großartig, danke Kumpel:} –

2

Wenn Sie die externen Zugriff auf index.php zu deaktivieren, setzen Sie den folgenden Code über Ihren bestehenden Regeln

RewriteEngine on 

RewriteCond %{THE_REQUEST} \s/index\.php\s [NC] 
RewriteRule^- [F] 

Dies wird einen verbotenen Fehler zurück, wenn /index.php direkt zugegriffen wird.

+0

Das ist großartig, aber anstatt einen verbotenen Fehler zurückzugeben, wie kann ich dies auf eine bestimmte Route umleiten? h.: ​​RewriteRule^- www.mysite.com/error/errors –

Verwandte Themen