[.htaccess] 루트 URL을 하위 디렉토리로 리디렉션하기위한 .htaccess 재 작성

www.example.com

직접 가다

www.example.com/store

여러 비트의 코드를 시도했지만 아무것도 작동하지 않습니다.

내가 시도한 것 :

Options +FollowSymlinks
RewriteEngine on

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

RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

내가 뭘 잘못하고 있죠?



답변

^ $ 를 사용 하여 루트를 나타내는 다시 쓰기 규칙을 사용 하여 다음과 같이 루트를 / store 디렉토리에 다시 쓸 수 있습니다.

RewriteEngine On
RewriteRule ^$ /store [L]


답변

아무도 이것을 언급하지 않은 것에 놀랐습니다.

RedirectMatch ^/$ /store/

기본적으로 루트 URL과 루트 URL 만 리디렉션합니다. 답변은 이 링크 에서 시작되었습니다


답변

이 시도:

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

방문 브라우저에 리디렉션 된 URL이 표시되도록하는 외부 리디렉션을 원할 경우 R플래그도 설정하십시오 .

RewriteRule ^$ /store [L,R=301]


답변

다음은 하위 디렉토리로 리디렉션하는 데 사용한 것입니다. 이것은 보이지 않고 기존 파일과 일치하는 요청을 통해 여전히 허용합니다.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]

값으로 site.com 및 subdir을 변경하십시오.


답변

루트에서 하위 폴더로의 보이지 않는 리디렉션을 설정하려면 /root/.htaccess에서 다음 RewriteRule을 사용할 수 있습니다.

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [NC,L]

위의 규칙은 내부적으로 브라우저를 다음에서 리디렉션합니다.

브라우저는 루트 폴더에 남아 있습니다.


답변

URL을 다시 작성하고 원래 URL을 숨기려는 경우 다른 대안 :

RewriteEngine on
RewriteRule ^(.*)$ /store/$1 [L]

이것으로 예를 들어 type http://www.example.com/product.php?id=4인 경우 파일을 투명하게 열지 http://www.example.com/store/product.php?id=4만 사용자에게 전체 URL을 표시하지 않습니다.


답변

가장 간단한 해결책 인 것 같습니다.

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]

다른 솔루션 중 일부와 함께 리디렉션 루프가 발생했습니다.