2017-03-28 1 views
0

특정 카테고리로 리디렉션해야하는 많은 오래된 URL이 있습니다.PHP 리디렉션 후에 mod_rewrite를 구현하는 방법은 무엇입니까?

  • www.example.com/some-requested-product ->www.example.com/index.php?categories=some-requested-product
  • www.example.com/ 일부-요청-기사 ->www.example.com/index.php?articles=some-requested-article
  • www.example.com/some-requested-user ->www.example. com/index.php? users = some-requested-user

기타 등등 - 요점을 얻으시기 바랍니다. (실제로 콘텐츠 유형에 대한 URL에 힌트가 없습니다.) 내가 리디렉션을 만든

, 지금은 내가 필요로하는 컨텐츠에 도달 할 수 있습니다 :

  • 한다 RewriteRule^([A-ZA-Z0를 -9 -] +) $ /index.php%{REQUEST_URI} 나는 그것이 콘텐츠의 유형을보고 이제 URL을 조회 할 수있는 PHP에서

:

  • if ($ _SERVER [ 'REQUEST_URI'] == "/ some-requested-content") {Redirect ($ BaseURL. "/ index.php? category_type = some-requested-content", false); }

리디렉션이 이루어지고 콘텐츠가 페치됩니다. (테스트 용으로는 안전하지 않다는 것을 알고 있습니다.)

이러한 문제가 발생하면 가장 중요한 문제는 어떻게됩니까?

리디렉션되는 URL이 아니라 브라우저의 주소 표시 줄에 원래 요청한 것과 동일한 URL (www.example.com/some-requested-content)을보고 싶습니다.

가능합니까? 다른 해결책을 생각해 볼 수 있습니까?

답변

0

당신은 쿼리 문자열 APPEND (QSA)

RewriteCond %{REQUEST_URI} ^/some-requested-article$ 
RewriteRule ^(.*)$ index.php?articles=$1 [L,QSA] 

RewriteCond %{REQUEST_URI} ^/some-requested-product 
RewriteRule ^(.*)$ index.php?categories=$1 [L,QSA] 

등을 찾고, 당신은 등 카테고리, 기사, 사용자처럼 정규식 덮개 쿼리 문자열의 각각의 경우를 확인하고 싶습니다.

L은 다시 쓰기 규칙에서 마지막으로 처리하는 것을 의미합니다. 사용하는 것이 매우 중요합니다.

이렇게하면 보이는 URI는 유지되지만 요청을 처리하는 페이지는 원하는 쿼리 문자열 데이터를 내부적으로 전달합니다.

URL을 실제로 마스킹하지 않으면 URL은 기본적으로 원하는 쿼리 문자열 데이터를 채우고 요청을 처리하는 파일로 보냅니다.이것은 일반적인 방법입니다. 많은 블로깅 및 CMS 플랫폼이 검색 엔진 친화적 인 URL을 처리하는 방법입니다.

그러나 각 사례에서 실제 URL에 대한보다 정확한 예를 제공하지 않았기 때문에 게시 할 솔루션에 변수 값을 처리하는 정규식이 필요합니다. 유형간에 실제 패턴 차이가없는 경우이 방법을 사용할 수 없으므로 검색어 문자열 유형 당 정확한 값/URL 목록을 찾아 [OR] 옵션을 사용하여 가능한 일치 항목으로 나열해야합니다 RewriteCond 테스트에서. 너무 많은 페이지가 관련되어 있지 않으면 작동합니다.

과 같이 :

RewriteCond %{REQUEST_URI} ^/beans-are-fun$ [OR] 
RewriteCond %{REQUEST_URI} ^/rice-is-fun$ [OR] 
RewriteCond %{REQUEST_URI} ^/fun-with-rice-and-beans$ 
RewriteRule ^(.*)$ index.php?articles=$1 [L,QSA] 
관련 문제