2011-08-24 9 views
0

현재 아파치 2.2예쁜 URL 및 SEO 친화적 인 URL?

RewriteRule ^/news$ /page/news.php [L] 
RewriteRule ^/news/(.*)$ /page/news.php?id=$1 [L] 

같은 간단한 작업을 수행 할 수 있지만이

http://www.example.com/link/param1/param1_value/param2/param2_value

마지막으로, 또한 같은 stackoverflow

같은 SEO 친숙한 URL을 구현하는 알고 싶습니다.

http://www.example.com/doc_no/

http://www.example.com/doc_no/this-is-the-article

예제 코드와 함께 몇 가지 제안 사항을 알려주십시오.

답변

1

나는 PHP symfony 프레임 워크가 그렇게 할 수 있음을 알고 있습니다.

가 작동합니까 방법이 프론트 컨트롤러에서

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

(이것은 "프론트 컨트롤러"라고 심포니에서), 아파치 설정에서 를 단일 진입 점에 들어오는 모든 resquest을 리디렉션 mod_rewrite를 사용하면 URL에서 제공하는 모든 정보를 보유하는 "요청"객체를 만들 것입니다.

예를 들어, 당신은 말할 수 그 후 우선은 "/"PHP 파일의 이름을 불러와 모든 다른이되도록 매개 변수와 값입니다입니다 : http://example.com/file/id/2이 ID = 2

와 file.php 호출

이렇게하려면 그냥 reg exp를 사용하고 "Request"클래스를 신중하게 디자인하십시오. 위의 예에서 "요청"클래스는 getRequestedAction() 및 getParameter (문자열 매개 변수) 메소드를 모두 제공해야합니다. getRequestedAction() 메소드는 올바른 파일/조치/메소드를 호출하기 위해 "요청"오브젝트가 완전히 채워질 때 사용됩니다. http://example.com/file/id/2http://example.com/file?id=2 과 동일 (모두 : 당신이 등록 된 URL을 특급과 _GET 배열의 구문 분석 모두 요청 개체의 매개 변수 배열을 채우는 선택하면 어디

, 당신은 지점에 도착 할 수있다 작동 가능)

확장 프로그램을 무시하도록 선택할 수 있습니다 (http://example.com/file.html은 http://example.com/file과 동일).

마지막으로 일부 URL의 경우 마지막 '/'다음에 오는 모든 것을 무시할 수 있습니다. 따라서 : 은 http://example.com/question/3/is-linux-better-than-windows과 같습니다.

다른 file.php에서 _GET 또는 _POST를 사용하는 대신 "request"> getParameter ('id')를 사용하여 'id'매개 변수의 값을 가져옵니다. 배열.

요점 사이트를 실행하는 데 필요한 모든 정보를 포함하는 "요청"객체를 생성,

  1. 리디렉션 하나의 "프론트 컨트롤러"해당 파일에서
  2. 로 들어오는 모든 트래픽입니다
  3. , 액션 내부
  4. 객체
  5. 전화 올바른 행동이 "요청"에 포함 된 정보를 기반으로 (PHP 파일)가 URL에 포함 된 매개 변수를 가져 오기 위해이 요청 객체를 사용

도움이 되었습니까?

+0

누구든지이 예제를 가지고 있습니까? 이 유형의 구성을 구현하고 싶지만 코드가 실제로 "file.php"파일에서 어떻게 보이는지에 대해서는 약간의 상실감이 있습니다. –

0

참고 Google have statednews.php?id=$1news/$1 대신에 변수를 쉽게 감지 할 수 있으므로 선호합니다.

http://www.example.com/param1/?id=param2_value 
:

http://www.example.com/link/param1/param1_value/param2/param2_value 

당신은 항상이 경우 하나 개의 매개 변수는 범주와 같은 제네릭 결합 할 수 있습니다 : 당신의 첫 번째 예에서 보는 것처럼 혼란을 조금 변수의 수입니다 증가 할 때 더 적절하다

둘 이상의 매개 변수가 필요하고 임시 검색이 아닌 경우 실제로 디자인을 재평가해야합니다.

+0

실제로 Google은 중요하지 않은 매개 변수에 대한 변수를 원합니다. param이 검색하는 내용을 정의하고 (페이지를 변경하지 않고 변경되는 세션 id와 같은 somehting이 아니라면) 친숙한 URL이 여전히 더 우수합니다. –

+0

@boomhauer 내가 추가 한 링크보기 : "이 작업을 처리 할 수는 있지만 URL을 올바르게 입력하면 유지 관리가 어렵고 새로운 매개 변수가 원래의 동적 URL에 추가 되 자마자 업데이트해야하므로이 재 작성을 사용하지 않는 것이 좋습니다. " –

+0

그래, 사실 ...하지만 그들의 인덱서 친화적 인 URL을 취급하는 것보다 훨씬 낫다. 그래서 나는 증거가 있다고 생각한다. :) –