2013-03-19 3 views
1

웹 사이트의 이전 버전에서 일부 URL을 새 URL로 리디렉션해야합니다. 나는 간단한 URL을 사용하여 문제를 발견하지 못했지만, 나는의 QueryStrings과 URL이 동작하지 않습니다 :htaccess를 사용하여 쿼리 문자열을 포함한 동적 URL 리디렉션

Redirect 301 /product_detail.php?id=1 http://www.mysite.com/product/permalink 

그것은 간단하게 찾을 수 없음, 404을 반환합니다.

또한 렉스에 대한 경로 (내가 사용하고있어 PHP 마이크로 프레임 워크)와 함께 노력하고있어하지만 중 하나가 작동하지 않았다 :

$app->get('/product_detail.php?id={id}', function($id) use ($app) { 

    $prodotto = Product::getPermalink($id); 

    return $app->redirect($app['url_generator']->generate('product',array('permalink'=>$prodotto))); 
}); 

이 할 몇 가지 htaccess로 규칙과 방법이 쿼리 문자열은 URL의 일부로 간주되어 제대로 리디렉션됩니까?

감사합니다.

답변

1

301 /product_detail.php?id=1 http://www.mysite.com/product/permalink

Redirect 쿼리 문자열을 조작하는 데 적합한 mod_alias가 지시하지 리디렉션 :

mod_alias는 간단한 URL 조작을 처리하도록 설계

. 쿼리 문자열 조작과 같은 더 복잡한 작업을 수행하려면 mod_rewrite에서 제공하는 도구를 사용하십시오.

그래서, mod_rewrite 사용해야 Apache mod_alias docs

에서 추출. 쿼리가 자동으로했다

http://www.mysite.com/product/permalink?id=1

:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} ^/product_detail\.php [NC] 
RewriteCond %{REQUEST_URI} !/product/permalink [NC] 
RewriteRule .* /product/permalink  [R=301,NC,L] 

그것은

http://www.mysite.com/product_detail.php?id=1

로 리디렉션 : 루트 디렉토리에 하나 개의 .htaccess 파일의 같은 예는 다음과 같이 될 것이다 대체 URL에 추가됩니다.

내부 매핑의 경우, 교체 [R = 301, NC, L] [NC, L] 당신의 통찰력있는 답변을

+0

감사와! 어쨌든 나는 PHP 레벨에서 리다이렉트로 문제를 해결하기로 결정했다. 리다이렉트 할 백개의 제품 페이지가 있기 때문에 내 .htaccess 파일을 읽을 수없는 텍스트 벽이되도록 남겨 두었다. – Ingro

관련 문제