Umleitung in meinen Laravel-Projektordner

Umleitung in meinen Laravel-Projektordner

Meine .htaccessDatei enthält den folgenden Inhalt. Ich habe erwartet, dass sie zu meinem Projektordner weitergeleitet wird /hc, der sich auf derselben Ebene wie befindet .htaccess. Die Weiterleitung findet nicht statt und der Inhalt von wird weiterhin angezeigt index.html.

RewriteEngine On

RewriteBase /hc/

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L,QSA]

Antwort1

Ich habe erwartet, dass es zu meinem Projektordner weiterleitet /hc.auf dem gleichen Niveau wie.htaccess.

Das ist das Problem. Wenn sich die .htaccessDatei im /hcUnterverzeichnis befindet, wird sie die Anfrage nie sehen, es sei denn, Sie schließen das /hcUnterverzeichnis bereits in die Anfrage ein.

Ihre .htaccessDatei muss in das übergeordnete Verzeichnis, also in das Dokumentstammverzeichnis, verschoben werden. (Übrigens bräuchten Sie die RewriteBase /hc/Anweisung nur, wenn sich die Datei im Dokumentstammverzeichnis befände.)

Oder fügen Sie einzusätzlich .htaccessDatei im Dokumentstamm, die alle Anfragen einfach an Ihr /hcVerzeichnis (Ihren Front-Controller) weiterleitet, zum Beispiel:

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

Beachten Sie, dass mod_rewrite standardmäßig nicht übernommen wird. Sobald die Anforderung in das /hcUnterverzeichnis umgeschrieben wurde, .htaccesswird die Datei im Unterverzeichnis verarbeitet und überschreibt die mod_rewrite-Direktiven in der übergeordneten .htaccessDatei. So entsteht keine Umschreibschleife.


RewriteRule .* index.php?/$0 [PT,L,QSA]

AKTUALISIEREN:DeinAuswechslungstring in der letzten RewriteRuleunterscheidet sich von der vorherigen Direktive. Beide sind wahrscheinlich nicht korrekt. Sie sollten das ?in der obigen Direktive entfernen, es sei denn, Sie möchten die Abfragezeichenfolge verwenden. In diesem Fall sollten Sie ein ?zur vorherigen Direktive hinzufügen. So wie es aussieht, verwendet die erstePfadinformationenum die URL zu übergeben, der zweite verwendet dieAbfragezeichenfolge.

Übrigens PTist das Flag in Verzeichnisdateien redundant .htaccess. Und wenn Sie die Abfragezeichenfolge nicht verwenden, QSAkann das Flag auch entfernt werden.

Antwort2

Sie müssen die Option „rewrite“ in Ihrer Apache-Konfigurationsdatei „sites-available“ zulassen. Bei Laravel sollten Sie vorsichtig sein, da sich Ihr DocumentRoot (öffentlicher Ordner, in dem Sie die .htaccess-Datei benötigen) im Projektordner befindet.

verwandte Informationen