2009-07-09 8 views
1

말라고 명시 적으로의 I가 내 htaccess로에서 다음 재 작성 : 당신이 알 수 있듯이, 그것은 다시 쓰지하기로했다mod_rewrite의 재 작성 가지가

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule \.(css|jpe?g|gif|png)$ - [L] 
RewriteRule ^index/error/([^/\.]+)/?$ index.php?error=$1 [L] 

어떤 .CSS/.JPG/.JPEG/.gif 중요 /.png 파일. 그럼에도 불구하고 그렇게하고 있습니다. 정말로 이상한 점은 그 아래의 줄, 즉 index/php? error = $ 1로 향하는/index/error/whatever가 완벽하게 작동한다는 것입니다. 정규 표현식에 문제가 있습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?

TIA. 나중에 문제를 해결에 많은 시도 후

편집 :

내가 사실 (내 생각에) 다른 발견 더 우아한 확실히 간단한 방법은이 작업을 수행합니다. 내 문제는 내 파일에 CSS 파일에 대한 포인터가 href = "./ css/styles.css"로 포함되어 있다는 것입니다. styles.css 파일은 절대로 움직이지 않을 것입니다. 그래서 href 요소를 상대 URI 대신 절대 URI (http://www.mysite.com/css/styles.css)가되도록 변경했습니다. 문제 해결됨! 도움을 주신 모든 분들께 감사드립니다.

당신은 또한

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !\.(css|jpe?g|gif|png)$ 
RewriteRule ^index/error/([^/\.]+)/?$ index.php?error=$1 [L] 

처럼 확장의 세트에 규칙을 적용 피하기 위해한다 RewriteCond를 사용할 수 있습니다

+0

괜찮아 보입니다. 아파치 로그 파일에서 어떤 일이 일어나고 있는지 정확히 보여줄 수 있습니까? –

+0

규칙을 다시 작성하면 css, jpg ... 파일에 적용됩니까? –

답변

0

사실 내 생각에 좀 더 우아하고 확실히 간단한 방법을 발견했습니다. 내 문제는 내 파일에 CSS 파일에 대한 포인터가 href = "./ css/styles.css"로 포함되어 있다는 것입니다. styles.css 파일은 절대로 움직이지 않을 것입니다. 그래서 href 요소를 상대 URI 대신 절대 URI (http://www.mysite.com/css/styles.css)가되도록 변경했습니다. 문제 해결됨! 도움을 주신 모든 분들께 감사드립니다.

+0

이것은 대용 암호가 없더라도 '-'가 절대 URI와 관련하여 다시 작성되는 것처럼 보이는지 궁금합니다. –

+0

저도 요. 나는 더 나은 문제를 해결할만큼 충분한 것을 알고 싶다! – benjy

2

, 당신은 실패하고 어떤 방법으로 무엇을 요청 언급하지 않는, 즉 알고 좋을 것입니다 이것은 문제를 해결하기에 충분하지 않습니다 (가능성이 있습니다).

+1

+1 URL 재 작성으로 처음 플레이 할 때이 문제가 정확히 발생했기 때문에 (RewriteCond를 사용하지 않음). –

+0

불행히도 아니, 당신 말이 맞아, 그걸 해결하지 못하는 것 같아. 내가 겪고있는 특정 문제는 내 CSS 및 이미지 파일을 요청할 때 Safari (및 Firefox 및 Stainless)가 다시 쓰기 규칙을 따르지 않고/index/error/-1/(예 :)를 디렉토리로보고 있다는 것입니다. 루트 디렉토리에 있어야합니다. 그렇게 설명 할 수 있을까요? – benjy

1

URL이 수정 될 때 '마지막'규칙은 .htaccess에는별로 유용하지 않습니다. mod_rewrite tech을 참조하십시오. 거기에 재 작성이 요청 처리 후반에 발생하여 디렉토리를 알고 있지만 URL을 다시 작성하기에는 너무 늦기 때문에 이것이 나타납니다. 새로운 요청을 생성하여이 문제를 해결하고 새로운 요청이 "마지막"플래그를 효과적으로 무효화하는 동일한 규칙에 의해 다시 처리되도록합니다.

귀하의 경우에 어떻게 적용되는지 볼 수 없습니다. '-'는 URL 재 작성이 아니어야합니다. this web site에서 다음 명령을 사용하여 다시 작성을 디버그하는 것이 좋으며 규칙이 무시 된 것으로 보이는 이유를 확인해야합니다.

You can debug mod_rewriting adding those two directives in httpd.conf: 
    RewriteLogLevel 9 
    RewriteLog "<path-to-log-file" 

정규식 나에게 외모와 나는 거의 a mod_rewrite example에서 같은 일을 보았다.