2009-06-02 4 views
1

mod_rewrite (우분투 서버 9.04에서 실행되는 Apache2)를 사용하는 웹 사이트에서 페이지 앵커를 설정하려고합니다.페이지 앵커와 mod_rewrite?

내 htaccess로 파일은 다음과 같다 :이 같은 것을 얻을 수 있었으면 해요 http://mydomain/information.php?display=faq#cost

:

RewriteEngine On 
RewriteRule ^information.php/([A-Za-z0-9-]+)/?$ information.php?display=$1 [NC,NE] 

나는 정기적으로 URL을 사용하는 경우 쿼리는 다음과 같이 보일 것입니다 http://mydomain/information/faq/cost

이것은 가능합니까? 내 이해는 modrewrite가 페이지 앵커를 무시하고 브라우저가이를 처리한다는 것입니다. 나는 어떻게 든 mod_rewrite를 사용하여 앵커 정보를 요청에 포함시킬 수 있다고 추측하지만이 문제를 문서화하는 것을 찾을 수 없었으며 몇 시간 동안 직접 작성하지 못했습니다.

감사합니다.

답변

3

실제로 결과로 URL에 앵커가 있으면, 가능합니다. 아파치 configs에서 #는 주석의 시작 부분을 표시한다는 것을 잊지 마십시오.

을 입력하고

http://example.com/?p=page#anchor
으로 리디렉션됩니다. 301 리디렉션 또는 이와 비슷한 것을 사용해야하므로 사용자에게는 투명하지 않습니다.

결론 : 이러한 리디렉션 규칙을 작성할 수는 있지만 전체적으로 서버 측에서 수행 할 수는 없습니다. 그래서 /information/faq에서 /information.php?display=faq을 가리키고 다음과 같은 URL을 사용하는 것이 좋습니다 :

http://example.com/information/faq#foo
거의 원하는대로하고 캐싱을 망칠 필요가 없습니다.

(우와, 이미 자정?)

+1

+1, 좋은 지적, 나는 질문을 오해하고 주변의 다른 방법으로 생각했다. –

+0

흠, 나는 이런 종류의 리다이렉션도 가능하지만, HTTP 리디렉션 만 사용하여 서버 측에서 처리 할 수 ​​없으므로 사용자에게 투명하지 않습니다. – grawity

+0

물론입니다. HTTP 리디렉션이 필요합니다. –