2010-05-01 6 views
1

나는 apache2에서 항상 작동하지만 지금은 새로운 공유 호스팅을 시도하고 다시 쓰기 규칙이 적용되지 않는 몇 가지 다시 쓰기 지시문을 사용하고 있습니다.다시 쓰기 규칙이 아파치 1.3을 작동하지 않습니다

나는 다음과 같은 필수 규칙에 .htaccess 파일을 감소했습니다 당신이 볼 수 있듯이

RewriteEngine On 
Rewritebase /demo/ 

RewriteRule ^(.*)$ index.php/$1 [L] 

, 난 루트에서 데모 폴더에 내 index.php 파일에 대한 모든 요청을 다시 작성합니다.

http://www.example.com/demo/albums/show/1과 같은 것은 모두 표준 MVC 설정을 위해 http://www.example.com/demo/index.php으로 처리해야합니다. (CodeIgniter btw를 사용하고 있습니다.)

위의 지시어는 500 오류가 발생하므로, 1.3과 2.x의 구문에 약간의 차이가있을 수 있습니다.

일부 흔적 및 오류 편집 후 재 작성 규칙 자체가 잘못되었음을 발견했지만 실제로 이유를 이해하지 못합니다.

  • 내 다시 쓰기 규칙이 작동하지 않는 이유는 무엇입니까? 많은 다른 서버에서 이전에 그랬습니다.
  • 제안 사항 해결 방법?

참고 : mod_rewrite가 작동하지만, 나는 작은 테스트를 작성했습니다. 당신의 위치에서

답변

1

, 아마 먼저 아파치 오류 로그에보고 싶은데, 다음 사람이 그 일을하면

RewriteEngine On 
RewriteRule ^/demo/index.php$ /demo/index.php [L] 
RewriteRule ^/demo/(.*)$ /demo/index.php/$1 [L] 

을 수행하여 이동 부분 제거하기 위해 노력할 것이라고, 나는 RewriteBase를 재 도입 시도 할 것입니다.

+0

감사합니다, 좋은 팁을, 내가 RewriteBase 지시어를 제거 한이 루트에 대한 200 응답 결과 .../데모 /하지만 다른 결과 404 아파치에서 (내 스크립트에서 처리하지는 않지만 내 로그에서 알 수 있습니다.) –

+0

우연한 재 작성을 피하기 위해 위의 RewriteRule을 추가했습니다. RewriteCond로 처리하는 방법이 있지만 커피가 필요합니다. –

1

당신은 설정 했 :

Options +FollowSymLinks 

... 재 작성 규칙 전에? FollowSymLinks을 사용하지 않으면 mod_rewrite가 작동하지 않습니다.

+0

팁이 좋지만 추가해도 도움이되지 않습니다 ... txn ;-) –

1

index.php/…^(.*)$과 일치하므로 사용자가 무한 재귀를 실행하고있을 수 있습니다. 그래서 대상 제외하려고 : 일반 옛날

RewriteCond $1 !^index\.php/ 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

동의 - 나쁜 패턴입니다. – user97410

관련 문제