알아낼 수없는 mod_rewrite 리디렉션 문제가 있습니다.하위 디렉토리로 리디렉션
특정 도메인의 모든 요청이 지정된 하위 디렉토리에 "자동으로"다시 작성됩니다. 예 : www.mydomain.net/hello.html
은 /net/hello.html
에있는 파일을 검색합니다. 다음 (내 호스팅 루트에 위치)의 .htaccess 이 완벽하게 달성 :
RewriteEngine on
RewriteBase/
RewriteCond %{ENV:REDIRECT_STATUS} 200 # <-- i will need this later. read to the end of the post.
RewriteRule .* - [L]
rewriteCond %{HTTP_HOST} ^www.mydomain.net$
rewriteCond %{REQUEST_URI} !^/net.*$
rewriteRule (.*) /net/$1 [L]
그러나,이 디렉토리에 직접 URL을하지만 눈에 띄게 하위 디렉토리없이 URL 에 301 리디렉션합니다. 예 : www.mydomain.net/net/hello.html
은 www.mydomain.net/hello.html
(아직 /net/hello.html
에있는 파일을 검색하는 것)으로 리디렉션해야합니다. (/net
에 위치)이 내 .htacces 파일은 불행히도 작동하지 않습니다
RewriteEngine on RewriteBase/ RewriteCond %{HTTP_HOST} ^localhost$ RewriteRule ^(.*) /$1 [R=301,L]
내가이 부정사를 얻을 루트 htaccess로 파일에 RewriteCond %{ENV:REDIRECT_STATUS} 200
블록에도 불구하고 루프를 재 ... 그래서 무슨 일이야? btw, modyrewrite를 사용해야합니다. 사이트가 외부로 호스팅되어 있고 아파치 설정에 액세스 할 수 없기 때문입니다.
많은 포인터에 대해 감사드립니다.
감사가 검보! THE_REQUEST를 사용하면 루프를 우회합니다. 그러나 .htaccess 파일이 하위 디렉토리 "net"에서 실행되기 때문에 RewriteRule 행을 "RewriteRule^(. *)/$ 1 [L, R = 301]"으로 변경해야했습니다. – halloleo