2011-01-14 10 views
1

Gibt es eine Möglichkeit, den Webroot-Ordner im eigentlichen Stammverzeichnis zu behalten?Wie ändere ich den Standort von Webroot in CakePHP?

Um zu erklären: Was soll ich tun, um eine Ordnerstruktur wie folgt zu erreichen:

app/ 
cake/ 
css/ 
files/ 
img/ 
js/ 
plugins/ 
vendors/ 

Mit allem, was funktioniert, wie es sollte.

Antwort

5

Sie tun Fehler, Ihren Code öffentlich zu machen.

/project/ 
/project/app/ 
... 
/project/css/ 
/project/js/ 
... 

Wenn Sie jedoch nach wie vor setzen /project/ als Webroot wollen, legen Sie diese in .htaccess Datei

// /project/.htaccess 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app/webroot/index.php?url=$1 [QSA,L] 
</IfModule> 

Empfehlung: Sie auf die Standard-Verzeichnisstruktur von CakePHP bleiben sollte, weil es ist erwiesen Sicherheit und Best Practice für die meisten Anwendungen.

+0

Warum ist das Einfügen von Bildern, Skripten und CSS-Dateien in die Webroot ein Fehler? Wo ist das Sicherheitsproblem? – PawelMysior

+0

Wenn Sie '/ project /' als Webroot festlegen, können Sie '/ project/app /' durchsehen, indem Sie einfach auf diese 'http: // example.com/app/AppController.php' oder' http://example.com zugreifen/app/models/User.php' das du wirklich nicht so durchsucht werden willst. – Ish

+0

Naja, ok, das macht Sinn;] wenn ich 'http: // example.com/images /' in die Adressleiste eingebe, geht es zu 'http: // beispiel.de/app/webroot/images' - ist gibt es eine Möglichkeit, das zu beheben? – PawelMysior

1

Ich verstehe, dass Sie möchten, dass Ihr Workflow vereinfacht wird und Sie Zugriff auf die oberste Ebene der von Ihnen häufig verwendeten Verzeichnisse haben. Es ist jedoch nicht ratsam, den Hauptquellcode im Webstammverzeichnis zu haben.

Sie können stattdessen symlinks verwenden, um die statischen Ordner zu verknüpfen (css, img, js, etc).

Verwandte Themen