2016-04-24 3 views
1

Ich habe eine Web-Struktur wieWie kann ich mit Apache htaccess und PHP Anfragen an nicht öffentliche Verzeichnisse weiterleiten?

php/ 
public_html/ 
    .htaccess 

Wie kann ich Route etwas

www.mywebsite.com/app/ 

zu meinem eigentlichen PHP-Controller

php/App.php 

Ich habe bisher

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^app/*$ ./php/App.php?* 

Aber das ist falsch, weil

  1. Das Verzeichnis App falsch ist. Nicht sicher, wie zu bewegen, um zu bewegen, die /php dir

  2. Ich brauche alle Anfrage params übergeben (GET und POST) App.php aber ich bin mir nicht sicher, wie ich versuchte ?*

Antwort

2

Ein besserer und gebräuchlicherer Ansatz ist die Erstellung eines index.php in Ihrem Verzeichnis public_html, in dem Sie PHP-Skripte aus Ihrem Verzeichnis php oberhalb des Webstamms einfügen.

Gute Frameworks wie Laravel verwenden diesen Ansatz. Hier können Sie sehen Laravel's .htaccess.

Und Sie können GET und POST nur verwenden, die Sie normalerweise tun würden.

+0

Ist das nicht schlimm? Ich dachte, ich muss mein PHP von der Öffentlichkeit fernhalten. Wenn ich App.php in public_html lege, und es enthält (mit Dateipfaden natürlich) Dinge wie Users.php usw., ist das nicht der Zweck? – user3822370

+0

@ user3822370 - nein, es hat keinen Sinn. Der Code wird zur Ausführung in die Indexdatei aufgenommen. Solange sich Ihr Code oberhalb des Webstamms befindet, kann nur die Indexdatei auf ihn zugreifen. Das ist also der richtige Ansatz. Tatsächlich gibt es keinen anderen Weg, den Code zu referenzieren, da '.htaccess' nicht über dem Verzeichnis, in dem er sich befindet, sehen kann. –

+0

Nur um etwas zu verdeutlichen: Die Verwendung einer Indexdatei wird in diesem Fall als * Bootstrapping * bezeichnet. wie es die notwendigen Sachen für Ihre Anwendung lädt - damit * bootet * es. In der Laravel-Welt ist der Bootstrapper etwas komplex und nutzt Autoloading etc. –

Verwandte Themen