Google에서 발생하는 일부 크롤러 오류를 해결하기 위해 .htaccess를 사용하여 301 리디렉션을 만들려고합니다. Google은 일부 URL의 이전 버전을 사용하고 있습니다. 이로 인해 스파이더가 기존 경로에 액세스하려고 시도 할 때 오류가 발생합니다. 이러한 기존 URL에는 공백이 포함되어 있으며 그 중 많은 수가 URL 문자열 내의 다른 위치에 나타납니다. 예를 들어, URL은 다음과 같이 보았다 수 있습니다.htaccess 301 RedirecMatch 또는 RewriteRule을 사용하여 리디렉션
http://www.example.com/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil
이 URL은 궁극적으로 동일한 내용을 표시 특히 때문에, 불필요하게 긴. URL의 끝에 만 6 순열가 있지만
가http://www.example.com/773-halogen-aircon-oil
는,이 중 1,000 이상 그대로있다, 그래서 내가 쉽게에 RedirectMatch에 나 RewriteRule의 하나를 사용할 수 있다고 생각 : 그들은 지금 이런 식으로 단축되었다 6 개의 순열 중 하나가 존재하는지 여부와 일치하고 적절한 새 URL로 리디렉션합니다. 뿐만 아니라
RedirectMatch .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil
: :이 작동하지 않습니다
RewriteEngine On
RewriteBase/
RewriteRule .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil [R=301,L]
나는 다음을 시도했다. 정규식의 시작 부분을 ^. * /? 773과 다른 많은 것들로 변경하면서 정규식 문자 클래스 대신 \를 사용하여 공백을 이스케이프하는 것을 포함하여 많은 다른 옵션을 시도했지만 아무 것도 작동하지 않습니다.
정규식 테스트 기능을 http://www.regular-expressions.info/javascriptexample.html에 사용하고 정규식이 유효하고 예상되는 URL과 일치하는 것을 생성하지만 .htaccess가 예상대로 리디렉션되지 않는다고보고합니다. 다음과 같이 나는 일반 리디렉션을 사용할 수 있습니다
:
Redirect 301 "/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil" http://www.example.com/773-halogen-aircon-oil
이 작동하지만, 일치하기 때문에이 문제가 단지 자동차 키트 - 할로겐 - 에어컨 - 오일이 존재하고, 아마 (200)이있는 경우 그 URI 세그먼트의 순열은 가능한 모든 순열에 수작업으로 들어가게한다.
제안 사항? 나는 가능한 일을하려고 노력하고 있습니까?
RedirectRule^/. * - 할로겐 - 에어콘 오일/([0-9] +). * $ http://www.example.com/ 할로겐 - 에어콘 오일 [R = 301, L]'일반 형식입니까? –
문제는 첫 번째 세그먼트에 약 200 개의 순열이 있었고 그 중 대부분은 두 번째 세그먼트와 아무 관련이 없을 수도 있다는 것입니다. 따라서 첫 번째 세그먼트에 대한 일치는 작동하지 않습니다. 이는 모든 의도와 목적을 위해 사용될 수 있기 때문입니다. –
예를 들어 예전 URL은 "example.com/xxx-yyy-zzz/773 CAR 773-halogen-aircon-oil"또는 "example.com/aaa-bbb-ccc/773 CAR 773-halogen -aircon-oil "이되고 이제는 둘 다"example.com/773-halogen-aircon-oil "이됩니다 –