웹 하위 폴더를 루트로 리디렉션(/폴더를 /)

웹 하위 폴더를 루트로 리디렉션(/폴더를 /)

.htaccess를 사용하여 /folder를 /로 리디렉션하려고 하는데 Apache HTTP 서버 테스트 페이지만 표시됩니다. 내 루트 디렉터리는 다음과 같습니다.

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

내 .htaccess는 다음과 같습니다.

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

내가 도대체 ​​뭘 잘못하고있는 겁니까? httpd.conf를 확인했는데(Centos를 실행 중입니다) mod_rewrite 라이브러리가 로드되고 있습니다. 참고로 내 서버는 www 서버가 아니며 단순히 가상 머신이므로 호스트 이름은 centosvm입니다.

추가: 내 httpd.conf는 다음과 같습니다:

<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>

답변1

Mod_Rewrite가 로드되었는지 확인하세요. 루트 디렉터리에 있는지 확인하세요 AllowOverrides All(Apache 기본값이지만 대부분의 배포판에는 nonehttpd.conf 파일에 기본값이 있습니다).

답변2

<VirtualHost>내 선언에 루트에 대한 선언이 없다는 것을 알았습니다 <Directory>. 내를 다음으로 변경하면 <VirtualHost:

<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>

내 /.htaccess는 다음과 같습니다.

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]

if 라고 말한 REQUEST_URI = /다음 리디렉션하는 것이 더 깨끗할 것이지만 방법을 모르겠습니다.

답변3

RewriteCond와의 일치에서 초기 '/'를 삭제해야 합니다.

다음의 예를 참조하세요.http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

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

관련 정보