.htaccess는 하위 폴더를 해당 index.php로 리디렉션합니다.

.htaccess는 하위 폴더를 해당 index.php로 리디렉션합니다.

하위 폴더에 대한 각 요청을 동일한 폴더의 index.php로 리디렉션하려면 어떻게 해야 합니까?

myserver.com/folder/subfolder1/test   redirected to   folder/subfolder1/index.php
myserver.com/folder/subfolder2/test   redirected to   folder/subfolder2/index.php
...

다음과 같이 각 하위 폴더에 .htaccess를 추가했습니다.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA] 

상위 폴더에 하나의 .htaccess를 사용하여 리디렉션하고 싶습니다.

Folder/
        .htaccess    <-- one redirection here
        subfolder1/
                index.php
        subfolder2/
                index.php
        subfolder3/
                index.php
          ...  

        subfolder n /
                index.php

추신: 모든 하위 폴더는 서로 다른 이름을 가지며 명명 규칙을 따르지 않습니다.

답변1

DirectoryIndex루트 파일에 올바르게 설정되어 있는지 확인하기만 하면 됩니다 .htaccess. (기본값은 입니다 index.html. 많은 배포판 index.php에도 포함되어 있으므로 아무 것도 할 필요가 없는 경우가 많습니다!)

예를 들어:

DirectoryIndex index.php

index.php이는 디렉토리를 직접 요청할 때 요청된 디렉토리(상대 URL 경로 참고)에서 파일을 찾도록 Apache(mod_dir)에 지시합니다 .

문서 DirectoryIndex(예: index.php)를 찾을 수 없으면 403 Forbidden이 표시됩니다(mod_autoindex가 활성화되고 디렉토리 목록이 비활성화된 것으로 가정 Options -Indexes).

더 이상 추가해야 할 것은 없습니다. (실제로 "외부 리디렉션"을 원하지 않는 한?!)

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

mod_rewrite를 사용할 필요는 없습니다. 사실 이 규칙은 여기서는 아무 것도 하지 않습니다.상태디렉터리에 대한 요청을 명시적으로 제외합니다.

참조:

답변2

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/.*$ $1/index.php [L,QSA]

나는 답을 찾았습니다. 이 규칙을 사용하면 파일이 존재하지 않으면 모든 폴더가 index.php로 리디렉션됩니다.

관련 정보