2012-01-25 3 views
3

나는 오래된 전자 상거래 사이트에서 설정 한 301 개의 리디렉션 덕분에 3,000 라인이 넘는 htaccess 파일을 가지고 있습니다. 이 파일의 크기는 323kb이며로드 시간과 그에 따른 변환에 부담이 될까봐 걱정됩니다..htaccess 파일 압축

파일을 더 작은 크기로 압축 (축소) 할 수있는 것이 있습니까? 아니면 누군가가 301 리디렉션을 처리하는 더 좋은 아이디어를 제공합니까? 리디렉션이 간단한 리디렉션 url1 등 어떤 정규식, url2에 즉, 그리고 당신은 httpd.conf 파일에 액세스 할 수있는 경우

+0

샘플을 제공해 주시겠습니까? –

+0

답장을 보내 주셔서 감사하지만 할 수있는 도메인과 일치하는 패턴이 있다고 생각하지 않습니다. 이전 URL과 새 URL은 논리적으로 비교할 수 없습니다. RedirectMatch에 301 /acatalog/1000_Mile_Ultimate_Tactel_Ladies_Walking_Socks.html /1000-mile-ultimate-tactel.html RedirectMatch에 301 /acatalog/1000_Mile_Ultimate_Tactel_Men_s_Walking_Sock.html /1000-mile-ultimate-tactel.html RedirectMatch에 301 /acatalog/12_240_Volt_Mains_Adaptor.html/campingaz -12-240-volt-mains-adaptor.html – Gavin

답변

1

는, 당신은 처리하기 위해 당신의 .htaccess에있는 모든 리디렉션에 대한 RewriteMap를 사용 가능하게 단지 1 개 규칙을 가질 수있다 이들. 한다 RewriteMap 문서

보았다 업 키에서

은 맵 파일의 변경에 mtime (수정 시간)까지 아파치에 의해 캐시, 또는 아파치 서버가 다시 시작됩니다. 이렇게하면 많은 요청에 의해 호출되는 맵에서 더 나은 성능을 보장합니다.

+0

Gavin이 아파치 루트 나 vhost 설정에 접근했다면 그는'.htaccess' 파일을 사용하지 않을 것이라고 생각합니다. – TerryE

1

이러한 리디렉션을 모두 그룹화/일치 시키려면 일부 정규 표현식을 지정할 수 있습니까?

  • 첫 번째는 [R=301] 플래그를 사용 RewriteRule 문장의 (희망 작은) 세트를 사용하는 것입니다 :이 다음이 작업을 수행하는 두 가지 옵션을 제공합니다.
  • 두 번째는이 리다이렉트를 리다이렉터 스크립트로 옮기는 것입니다. 예를 들어 PHP 로직을 사용하여 레거시 전자 상거래 URI를 현재 형식으로 디코딩 한 다음 301/302 상태 및 위치와 함께 응답을 발행합니다 : 현재를 가리킴 URI. 이렇게하면 기존 전자 상거래 URI를이 리디렉터 스크립트에 모두 다시 쓰는 것이 필요합니다.

RewriteRule ^(product/.*) rewriter.php?uri=$1 [QSA,L] 

몇 가지 예 없다면, 나는 더 구체적인 답변을 드릴 수 없습니다. 죄송합니다.

1

이전에 이러한 사례가있었습니다. 대부분의 경우 리디렉션 구문을 RewriteRules로 바꿀 수 있습니다.

http://shop.example.com/shop/category/product-id.html 

이 사람 : : 예를 들어, URL의가에서 가면

RewriteRule ^/shop/([a-z]+)/([0-9]+)\.html$ /$1/$2.html [L, R=301] 

이 여전히 (301)가 발생합니다 :

http://shop.example.com/category/product-id.html 

당신은이 같은 재 작성과를 가져올 수 있습니다 리디렉션하므로 크롤러는 여전히 영구적 인 이동임을 알게됩니다.