2017-05-25 3 views
2

Ich habe versucht, die Lösungen bereits gebucht und zu verwenden, aber nichts funktioniert für jetzt und ich versuchte so ziemlich alles, was ich konnte, aber nicht funktioniert.Htaccess für Silex aus dem Root-Ordner nicht wie vorgesehen funktioniert

Dies sind die App-Verzeichnisse:

localhost/ 
    root/ 
    data/ 
    app/ 
    public/ 
     index.php 
    .htaccess 

Die .htaccess ist dies:

<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine On 
    RewriteBase /root/public/ 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

Das erste Problem ist, dass, wenn ich gehe zu localhost/root/public der Website wie beabsichtigt funktioniert, aber in Die URL sehe ich immer noch "öffentlich", die ich gerne entfernen würde.

Das zweite Problem ist, dass mein Ziel ist, von der URL localhost/root/in den Index zu gehen, aber jetzt, wenn ich dorthin gehe, zeigt es nur die Dateien im Ordner.

Vielen Dank.

Wie gewünscht, das sind die Routen, die ich benutze:

$app->get('/', function() use ($app) { 
    // code 
})->bind('home'); 

$app->get('/about-me', function() use ($app) { 
    // code 
})->bind('about-me'); 

Antwort

1

Es gibt zwei Fehler in Ihrem System.

Erstens: Der .htaccess im Stammordner sollte verwendet werden, um den 'öffentlichen' Teil der URL zu entfernen. Der Code dafür ist, wie die folgende:

RewriteEngine On 
RewriteRule ^(.*)$ public/$1 [L] 

Es im Grunde jede Strecke packt und leitet es an den öffentlichen Ordner, genau so, wie man will!

Zweite: Sie sollten eine weitere .htaccess-Datei in Ihrem '/ public' -Ordner erstellen, um alles in die index.php-Datei umzuleiten. Der Code für das sollte wie folgt aussehen:

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

Sie mit der folgenden Struktur sollte am Ende:

localhost/ 
    root/ 
    .htaccess (removes 'public') 
    data/ 
    app/ 
    public/ 
     index.php 
     .htaccess (forward to index.php) 

Dies sollte lösen sowohl Ihre Probleme. Wenn dies der Fall ist, markieren Sie bitte die Frage als abgeschlossen, indem Sie meine Antwort als diejenige markieren, die sie gelöst hat. Wenn dies nicht der Fall ist, geben Sie bitte weitere Probleme an, die Ihnen in den Sinn kommen!

+0

Jetzt wird es zum öffentlichen Ordner umleiten, aber wenn ich in der index.php bin, sehe ich immer noch die URL als 'localhost/root/public /', gibt es etwas, das den 'öffentlichen' Ordner entfernen kann in der URL? –

+0

Was passiert, wenn Sie versuchen, 'localhost/root /' zu laden? Wenn Sie dann in den öffentlichen Ordner umgeleitet werden, stimmt möglicherweise etwas mit der Route nicht überein. Aber testen Sie zuerst, was auf 'localhost/root /' passiert. Wenn es noch ein Problem gibt, werde ich Ihnen helfen! –

+0

Ja, ich werde von 'localhost/root /' zu 'localhost/root/public /' umgeleitet. –

Verwandte Themen