2010-04-12 3 views
0

다른 사람들이 나에게 직접 들어오는 링크가 많은 서버의 오래된 파일들을 나에게 넘기는 상황을 다루고 있습니다 (주로 pdf 파일). 이제는 파일을 정리했지만 다른 디렉토리에 있습니다. 전에는 'domain/manuals/file'이었지만 지금은 'domain/media/manual/file'입니다. htaccess 파일을 사용하여이 문제를 해결하기 위해 노력하고 있습니다.이름에 공백이있는 파일을 포함하여 htaccess를 사용하여 디렉토리를 리디렉션하는 방법은 무엇입니까?

많은 파일에는 이름에 공백이 있고 (내가 제어 할 수있는 것이 아니라) 이미 파일에 링크가 있으므로 파일 이름을 바꿀 수는 없습니다.

redirect 301 "/manuals/file 123.pdf" "http://www.domain.com/manuals/file 123.pdf" 

그러나, 이러한 파일의 부하가 나는 정규 표현식을 만들 수있는 방법이 있는지 궁금 : 나는 그들이 같은 따옴표를 사용하여 이름에 공백이있을 때 나는 파일을 개별적으로 재 지정할 수 있습니다 것으로 나타났습니다 그것은 전체 디렉토리를 재지 정하는 데 사용할 수있는 파일 이름의 공백을 처리합니다. 일부 파일에는 공백없이 적당한 파일 이름이 들어 있고, 일부는 공백이 있고 다른 공백은 하나 이상의 공백이 있어야한다고 덧붙여 야합니다. 꽤 아니야.

조언을 듣기 전에이 문제가 발생했다면 아이디어가 부족합니다.

감사합니다.

답변

1

무엇에 대해 :

RedirectMatch permanent ^/manuals/(.*)$ http://www.domain.com/media/manual/$1 

(.*) 경기 URL에 /manuals/을 다음 모든 문자.

: RedirectRedirectMatchmod_alias의 일부가 아닌 mod_rewrite 있습니다 (질문에 태그되었습니다로) 내가 게시 된 이전 mod_rewrite 규칙을 용서.

+0

감사합니다. @ 앤디는 그 덕분에 고마워했습니다. RedirectMatch 문 다음에 개별 파일에 대해 표준 301 리디렉션을 사용하면 다른 파일 이름이있는 파일의 URL을 리디렉션 할 수 있다고 생각합니까? 감사합니다. . – James

+0

파일 이름 변경을 먼저 리다이렉트하고'/ manuals/old file.pdf'에서'/ media/manuals/new file.pdf'로 간다. 그렇지 않으면 클라이언트는 2 개의 리다이렉트를하게 될 것이다. 하나는 파일 이름을 변경합니다.) –

+0

디렉토리에 대한 RedirectMatch 문 앞에 개별 파일에 대한 리디렉션을 넣었습니까? 도움 주셔서 감사합니다. – James

0

URL의 공백 문자가 필요한 경우 공백의 URL 인코딩 인 %20을 사용할 수 있습니다.

0

리디렉션은 전체 디렉토리에서 동시에 작업 할 수 있습니다.

Redirect permanent /manuals/ http://www.domain.com/manuals/ 

은 그럼 당신은 %20, 또는 다른 문자로 탈출 공간에 대해 걱정할 필요가 없습니다. Apache는 해당 경로 아래의 모든 파일을 대상 URL 아래의 동일한 파일로 리디렉션합니다.

( RedirectMatch는 정규식 일치에뿐만 아니라 존재, 당신은하지만 이것에 대한 그에 의지 할 필요가 없습니다.) 도움들에 대한

+0

에 감사하는 bobince에게 감사드립니다. – James

관련 문제