2009-05-06 7 views
3

새로운 Diggbar를 사용하면 현재있는 모든 URL 앞에 http://digg.com을 넣을 수 있으며 Digg 단축 URL이 만들어집니다. 나는 그들이 modrewrite (이 모든 것을 처음 접한 이래로 확신 할 수는 없지만)로 만한다고 가정합니다.Diggbar modrewrite - modrewrite를 통해 URL을 어떻게 전달합니까?

어떻게 처리하나요? 내가 작업하고있는 웹 사이트에서이 작업을 시도하면 내게 비칠 수 있습니다.

나는 다음을 수행 할 수 있도록하려면 :

RewriteEngine on 
RewriteRule ^([A-Za-z0-9]+)$ /message.php?id=$1 [L] 
:

http://example.com/http://stackoverflow.com/question/ask 

이이

http://example.com/index.php?url=http://stackoverflow.com/question/ask 

로 이동하지만 할 수 있도록하는 modrewrite이 나는이 modrewrite를 사용할 때

작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

5

Apache는 빈 경로 세그먼트를 제거하기 때문에 request line에서 값을 가져와야합니다. 처음 요청한 URI 경로 /http://foobar//http:/foobar/이됩니다. 그러나 요청 라인 (THE_REQUEST)은 그대로 유지 :

RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\s]+) 
RewriteRule ^https?:/ index.php?url=%1 [L] 
+0

우수함. " "에 "RewriteEngine"을 추가해야만했습니다. 고맙습니다! – JoshFinnie

1

정규 표현식에서 문자와 숫자 만 찾고 있으므로 콜론과 슬래시는 선택되지 않습니다.

RewriteEngine on 
RewriteRule ^http://(.+)$ /index.php?url=$1 [L] 

이것은 당신은 여기에 URL을 잡을 확인합니다, 그리고 :

당신은 아마 이런 식으로 뭔가를 할 것입니다) 또한 htaccess로의 예와 message.php에서의 index.php를 사용하는 당신은 여전히 ​​정규 페이지를 가질 수 있습니다! (example.com/index.php로 간다면 무슨 일이 일어 났을 지 생각해 보면 무한 루프가됩니다.)

+1

당신이 –

+0

아주 좋은 계정 https를 고려 할 수 있습니다. 나는 결코 messages.php 대신 index.php와 같은 작은 잡기를 위해 내 게시물을 다시 읽는 것을 잘 못합니다. https : // 및 http : //를 고려할 때 어떤 조치를 취해야합니까? – JoshFinnie

+0

정규 표현식을^https? : // (. +) $ –

관련 문제