다음 코드는 당신이 무엇을 요구하지 않습니다 "(즉, 아무것도) (그리고 경기가 대소 문자를 구분하지 않습니다) 다음 다른 위치까지 제공"/ "요청이 중 index.php
또는 index.html
또는 일치하지 않는 경우"
을
Order deny,allow
ErrorDocument 404 /404.php
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.(php|html) [NC]
RewriteCond %{REQUEST_URI} !^/$ {NC]
RewriteRule ^.*$ http://example.com/portal/$0 [R=301,L]
나는 다음 테스트 케이스를 사용하여 우수한 온라인 테스트 도구 http://htaccess.madewithlove.be
를 사용하여이 테스트 한 :
http://example.com -- no rewrite, second condition not met
http://example.com/ -- ditto
http://example.com/index.html -- first condition not met
http://example.com/index.php -- first condition not met
http://example.com/some/page.html -- rewritten as http://example.com/portal/some/page.html
을
EDIT 당신은 이것이 여전히 예상대로 작동하지 않는다고 말했습니다. 그래서 나는 큰 총을 꺼내왔다. 재 작성 엔진이 지침
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 9
으로 수행 모든 것을 "최대 로깅"을 설정하여 다음
으로 터미널 창에서 로그 파일의 끝에서 찾고, (어떤 경로 당신은 분명 원하는 선택)
tail -f /var/log/apache2/rewrite.log
정상적으로 작동하지 않는 부분을 빠르게 볼 수 있습니다. 약간의 손길이 쳐서 다음 코드로 연결되었습니다. 요청 된 URI 그냥 /index.html
또는 /index.php
, 또는이 /portal
로 시작, 또는 경우가 비어있는 경우, 다음 리디렉션하지 않는 경우 "라고
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index\.(php|html) [NC]
RewriteCond %{REQUEST_URI} !^/portal.*$ [NC]
RewriteCond %{REQUEST_URI} !^/$ [NC]
RewriteRule ^(.*)$ http://example.com/portal$0 [R=301,L]
이 경우가 나를 위해 일한 시험은 -. 그들이 작동하는지 확인 !. 당신을 위해
참고 : - 기본 나는 httpd.conf
파일에서 이러한 변화는, 루트 디렉토리의 .htaccess
파일에 당신은 너무 루트 디렉토리에있는 .htaccess
파일 읽기 짝수하기 위해주의 할 필요가 없습니다했다 아파치 설정은 그 디렉토리에 대해 Override none
을 가지고 있으므로 약간의 추가 작업이 필요합니다. 이온 교환을 수행하면 (sudo apachectl restart
명령을 실행하면) 어려움을 피할 수 있습니다. 귀하의 웹 사이트를 호스팅하는 사람과 귀하가 보유하고있는 통제에 따라 귀하에게 해당되지 않을 수 있습니다.이 문제에 대한 전문가가 superuser.com
에서 찾을 수있는 시점이 올 수 있습니다. 그러나 나는 이것이 당신을 속여 주길 바랍니다.
가능한 해결책은 http://stackoverflow.com/questions/2226364/trying-to-put-an-exception-to-rewriterule-in-htaccess를 참조하십시오. – Floris
질문을 편집하여 완료했거나 의도 한대로 작동하지 않습니다 ... 사람들은 먼저 솔루션을 제안하기 전에 착오가 무엇인지 먼저 파악해야합니다. – Floris
사과드립니다. 이게 더 명확한가요? – Tamerax