Web-Unterordner zum Stammverzeichnis umleiten (/Ordner nach /)

Web-Unterordner zum Stammverzeichnis umleiten (/Ordner nach /)

Ich versuche, /folder mit .htaccess nach / umzuleiten, aber ich erhalte nur die Apache HTTP Server-Testseite. Mein Stammverzeichnis sieht folgendermaßen aus:

/
.htaccess
-/folder
-/folder2
-/folder3

Meine .htaccess sieht folgendermaßen aus:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) /folder/$1 

Was mache ich falsch? Ich habe meine httpd.conf überprüft (ich verwende Centos) und die mod_rewrite-Bibliothek wird geladen. Nebenbei bemerkt ist mein Server kein WWW-Server, sondern einfach eine virtuelle Maschine, daher lautet sein Hostname centosvm.

Ergänzung: Meine httpd.conf sieht so aus:

<VirtualHost *:80>
        ServerName taa.local
        DocumentRoot /var/www/html
        SetEnv APPLICATION_ENV "dev"
        Alias /taa /var/www/html/taa/public
        <Directory /var/www/html/taa/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Antwort1

Stellen Sie sicher, dass Mod_Rewrite geladen ist. Stellen Sie sicher, dass Sie es AllowOverrides Allin Ihrem Stammverzeichnis haben (das ist die Apache-Standardeinstellung, aber die meisten Distributionen haben eine Standardeinstellung nonein der Datei httpd.conf).

Antwort2

Ich habe herausgefunden, dass in meiner <VirtualHost>Deklaration eine Deklaration für root fehlte <Directory>. Indem ich meine geändert habe <VirtualHostin:

<VirtualHost *:80>
        ServerName taa.local
        DocumentRoot /var/www/html
        SetEnv APPLICATION_ENV "dev"
        Alias /folder1 /var/www/html/folder1/public
        <Directory /var/www/html>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        <Directory /var/www/html/folder1/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Meine /.htaccess sieht so aus:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_URI} !^/folder2/
RewriteCond %{REQUEST_URI} !^/folder3/
RewriteCond %{REQUEST_URI} !^/folder4/
RewriteCond %{REQUEST_URI} !^/folder5/
RewriteRule (.*) folder1/$1 [L]

Es wäre sauberer, wenn ich wüsste, wie ich „wenn REQUEST_URI = /, dann umleiten“ sagen kann, aber ich weiß nicht wie.

Antwort3

Sie müssen den anfänglichen '/' aus einer Übereinstimmung mit RewriteCond entfernen

Beispiele finden Sie inhttp://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^folder/ 
RewriteRule (.*) /folder/$1

verwandte Informationen