2010-11-28 3 views
2

mod_rewrite의 총 초보자.아파치 mod_rewrite : 데이터베이스를 사용하여 다시 쓰기 규칙을 업데이트하십시오.

그래서 난 이 www.mysite.com/samsung 한의 나는 내 사이트의 모든 제조 업체 좋은 URL을 만들려한다고 가정 해 봅시다 www.mysite.com/sony www.mysite.com/acme

은 충분히 잘 작동합니다.

그러나 제조사가 수백 명이 넘고 끊임없이 변화한다면 무엇을해야할까요? 어딘가에 재 작성지도라고 불리는 것에 대한 모호한 언급이 있지만 그 설명과 튜토리얼은 없습니다. 누구든지 도와 줄 수 있습니까?

또한이 문제는 mod_rewrite 자습서에서 다루는 주요 주제가 아닌 이유는 무엇입니까? mod_rewrite는 수동으로 유지해야 할 때 어떻게 유용할까요? (사이트에 새로운 콘텐츠가있는 경우)?

또한 httpd.conf에 액세스해야한다는 언급이 있습니다. 호스팅 제공 업체의 서버에서 httpd.conf에 액세스하려면 어떻게합니까? 다른 모든 사이트는 어떻게합니까?

감사

답변

1

이 일반적으로 수행 될하는 방법은 더 복잡한 라우팅 (서버 측 프로그래밍 언어 또는 무엇이든) PHP 파일에 특정 패턴과 경로를 일치하는 모든 URL을 수행하게되는 것이다 . 이런 식으로 뭔가가 :.

RewriteRule ^(.*)$ myroute.php?url=$1 [QSA,L] 

그런 다음 myroute.php 파일에, 당신은에서 온 원래 URL을 포함하기 때문에 아마도은 "URL"쿼리 문자열 매개 변수에서 당신을보고 논리를 포함 할 수 있습니다 데이터베이스의 제조업체 또는 필요한 다른 항목과 일치시킬 수 있습니다.

이 예에서는 분명히 모두 개의 URL을 가져 와서 myroute.php에 매핑합니다. 또 다른 예는 같은 수 있습니다 :이 경우

RewriteRule ^/manufacturers/(.*)$ manuf.php?name=$1 [QSA,L] 

를, 그것은과 같이 URL을 매핑합니다 :

/제조/소니 => /manuf.php?name=sony
/제조/삼성 => /manuf.php?name=samsung 등 ...


이 경우, manuf.php 파일이 name 쿼리 문자열 매개 변수를 기반으로 데이터베이스를 볼 수 있었다.

+0

괜찮 았어, 나에게 일어난 게 아니야 ... 고마워 :)하지만 뭐? header()를 통해 적절한 URL로 라우팅합니까? 예쁜 URL을 유지하려면 어떻게해야합니까? –

+1

@ A-OK mod_rewrite가 "내부"리디렉션을 사용하면 사용자는 다시 작성된 "pretty"URL을 볼 수 있습니다. 대상이 별도의 호스트에 있거나 HTTP 리디렉션을 사용하도록 명시 적으로 지시 한 경우가 아닌 위치의 예입니다. –

+0

위 예제와 관련하여 묻고있었습니다. 다시 쓰기가 모든 URL을 myroute.php 파일로 리디렉션하면 header()를 통해 추가로 리디렉션됩니다 (다른 방법은 모르겠다). 사용자가 올바른 페이지에 도착하면 어떤 URL이 표시됩니까? –

2

비슷한 해결책을 찾고있는 동안이 대답을 보았습니다. mod_rewrite에 이제 RewriteMap 지시어가 있습니다. PHP 또는 다른 스크립팅 언어를 사용하지 않고 원하는대로 정확하게 수행 할 수 있습니다.

텍스트 파일, DBM 파일, 외부 스크립트 또는 SQL 쿼리로 매핑 규칙을 정의 할 수 있습니다.

도움이 되었기를 바랍니다.

+0

와우, 고마워,이게 내가 필요한거야. 특히 [plain text maps]에 대한이 줄 (http://httpd.apache.org/docs/trunk/rewrite/rewritemap.html#txt) : http://example.com/product/television이 요청 될 때, RewriteRule이 적용되고 요청은 내부적으로 http://example.com/prods.php?id=993에 매핑됩니다. – cnlevy

관련 문제