2009-10-29 6 views
1

저는 mod_rewrite를 처음 접했고 클라이언트에게 뭔가를해야합니다.오래된 '추한'URL을 친근한 URL로 리디렉션하는 방법은 무엇입니까?

www.mydomain.com/products.php?prod_id=32가 있다고 가정합니다.

이 제품에는 섹션 (옷)과 이름 (셔츠)이 있습니다. 이 이름과 섹션은 고유합니다.

SEO-Friendly URL에는 www.mydomain.com/products/clothes/shirt/이어야합니다.

은 내가

RewriteRule ^products/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ products.php?section=$1&name=$2 

내가 그렇게 할 수 만들 수 있습니다 알고, 그것을 작동합니다. www.mydomain.com/products.php?prod_id=32를 입력하는 사람들이 www.mydomain.com/products/clothes/shirt/ (브라우저 자체에서 변경)로 리디렉션되기를 바랍니다. 내 URL에 ID를 삽입하지 않고 어떻게 할 수 있습니까? 내 .htaccess에서 "전처리"PHP 파일을 호출하고 "products.php? section = $ 1 & name = $ 2"을 다시 만들 수 있습니까?

누구나 mod_rewrite에 대한 자세한 설명과 좋은 링크가 있습니까?

감사합니다.

답변

4

mod_rewrite은 정상적으로 처리 할 수있는 것보다 더 큰 문제가있을 수 있습니다. PHP를 사용하여 브라우저로 리디렉션을 반환 할 수도 있습니다. 그렇게하면 데이터베이스에 액세스하여 product_id 32/clothes/shirts/

+0

"solution_old_url.php? prod_id = 32"로 리디렉션되는 "products.php? prod_id = 32"와 일치하는 정규식을 작성하십시오. fix_old_url.php에서이 ID를 사용하여 쿼리에서 "옷"과 "셔츠"를 추출합니다. 이 후/옷/셔츠/PHP로 리디렉션합니다. 아파치 리디렉션 대신 PHP 리디렉션을 사용하여 SEO 관점과 다른 점이 있습니까? –

+0

브라우저 (또는 검색 로봇)는 리디렉션 중 하나에서 동일한 것을 볼 수 있습니다. 서버 외부에서 구현 방법을 알 수 없습니다. –

+0

나는 그 흐름을 너무도 이해하려고 노력하고 있습니다 ... 그것이 사용자라고 가정하십시오. 브라우저 -> products.php? prod_id = 32 -> apache -> fix_old_url.php -> 브라우저 -> apache ->/products/clothes/shirt/-> products.php? prod_id = 32. 맞습니까? –

3

PHP 내부에서 작업하는 것 외에 다른 옵션이 표시되지 않습니다.

products.php가 포함되어 있는지 확인하기 위해 URL ($_SERVER['REQUEST_URI'])을 확인하는 something.php 페이지의 맨 위에 뭔가를 추가 할 수 있습니다.이 경우 제품을 리디렉션하십시오. 리디렉션 전에 제품 범주와 이름을 찾으려면 데이터베이스를 쿼리해야합니다.

은 더 SEO을 개선하기 위해 헤더 :이 데이터는 "리퍼러 '헤더 필드를 통해 브라우저에 의해 전달 될 수

+0

입력 해 주셔서 감사합니다. 내 PHP 파일에 리디렉션 논리를 삽입하지 않도록하고 싶습니다, 나는 Ned Batchelder의 접근 방식이 더 좋다고 생각합니다. 감사! –

0

영구적으로 이전 설정해야합니다. 당신은 그 URL을 진행하고 get 인수를 볼 수 있습니다. 내가 기억한다면 모든 브라우저에서 지원되는 것은 아닙니다.

+0

리퍼러 헤더에이 정보가있는 이유는 무엇입니까? – phidah

-2

Apache? .htaccess 리디렉션을 시도하십시오. mod_rewrite가 필요 없습니다.

예 : products.php의 상단에 리디렉션 (301) /oldpage.html http://www.example.com/newpage.html

+0

매개 변수는 어떻게됩니까? – phidah

+0

Meh. 나는 이모티콘 사용에 -1을 줄 것이다. – inked

+0

.htaccess는 서버 측 mod_rewrite에서보다 많은 CPU 리소스를 사용하고 구성하는 것보다 느립니다. – Murvinlai

0

(또는 리디렉션 할 모든 페이지) 하나에

redirectToSeoUrl(); 

그런 다음 함수 호출을 넣을 수 include 파일 중 새 URL 및 리디렉션을 가져 오는 redirectToSeoUrl 함수를 작성합니다. 브라우저에 무엇인가 출력되기 전에 코드를 넣어야합니다.

관련 문제