2010-02-06 3 views
3

기본적으로 모든 이미지를 s3으로 이동하지만 내 웹 사이트의 오래된 이미지 위치에 대한 오래된 참조가 많이 있습니다. wp-content/uploads/폴더의 내용을 s3 주소로 다시 쓰려고합니다.아마존 S3로 Wordpress 이미지를 이동하는 mod_rewrite

짧은 이야기는 정규 표현식에별로 좋지 않아서 이미 오래되었습니다. 조언이나 도움을 주시면 대단히 감사하겠습니다.

편집 :

여기에 지금까지있어 무엇 :

대신 mod_rewrite를 사용의
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php 


RewriteRule ^wp-content/uploads/(.*)$ http://example.s3.amazonaws.com/wp-content/uploads/$1 [L] 
</IfModule> 
+0

몇 가지 예제를 넣어 URL 앞뒤. –

+0

현재 시도를 표시하도록 편집했습니다. – Brian

답변

11

, 당신은 또한 reverse proxy 사용하여 mod_proxy를을 설정할 수 있습니다. 정규 표현식을 사용하지 않아도 쉽게 구성 할 수 있습니다.

역방향 프록시를 설정하는 기본 mod_proxy 지정 문은 ProxyPass입니다. 당신은 일반적으로 해당 지역의 아파치 설정 파일 (일반적으로 httpd.conf 또는 apache2.conf)에 다음 행을 추가합니다 :이 경우

ProxyPass /wp-content/uploads/ http://example.s3.amazonaws.com/wp-content/uploads/ 

, 브라우저는 http://your-domain.com/wp-content/uploads/abc.png를 요청하는 것입니다하지만 웹 서버에 대한 프록시 역할을하여이 서비스를 제공 할 http://example.s3.amazonaws.com/wp-content/uploads/abc.png.

당신은 또한 당신의 아파치 설정 파일에서 주석 다음과 같은 구성 라인을 가지고 있는지 확인해야합니다

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so 
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so 

당신은 설정 파일에 대한 변경 작업을 수행 한 후 해당 지역의 아파치 서비스를 다시 시작해야합니다.

또한 가상 호스팅을위한 Amazon S3 버킷 (Amazon Documentation)을 설정해야합니다.

+0

이것은 훌륭한 솔루션처럼 보입니다.하지만 불행히도 나는 그런 것들에 대한 액세스 권한이없는 공유 호스팅 계획에 있습니다. ( – Brian

+1

URL은 URL 재 작성만을 유일한 옵션으로 남겨 둡니다. 비슷한 상황에있는 다른 누군가를 도울 수 있기 때문에 여기에 답을 남겨주세요. –

+0

그래, 확실히. 나는 그것을 멈추고 더 나은 호스팅으로 이동하면 미래에 다시 올 수 있습니다. mod_rewrite 기반의 조언 위의 내 시도에? – Brian

0

예에서 RewriteRule . /index.php 줄은 불필요하며 무한 루프가 발생하므로 문제가 될 수 있습니다 ([L] ("last") 한정자는 그다지 들리지 않습니다). 그렇지 않으면 의도 한대로 작동해야합니다. [L][R=301]으로 대체하여 영구 리디렉션을 원할 수도 있습니다.

+0

./index.php 규칙이 WordPress가 올바르게 작동하는 데 필요하지 않습니까? 아니면 그냥 내 엉덩이를 말하는거야? – Brian

+0

예, 그렇습니다. 규칙 위에 규칙을 적용 할 수 있습니다. –

+0

실제로 파일 검사 줄 위와 같이 파일을 이동해야합니다. 그렇지 않으면 규칙을 무시하고 실제 파일로 이동합니다. –

3

중간 용액에 도착합니다. 리버스 프록시를 사용하여 다시 쓰기 규칙을 사용하여 구입하십시오. 다시 작성해야하는 것은 다시 쓰기 규칙의 끝에있는 [P]뿐입니다. 다니엘 Vassallo 말한 것처럼, 당신은 또한 당신의 아파치 설정 파일에서 주석 다음과 같은 구성 라인을 확인해야 http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#forwardreverse

:

RewriteRule ^wp-content/uploads/(.*)$ http://example.s3.amazonaws.com/wp-content/uploads/$1 [P] 

을 살펴 보자 : 예를 들어 는

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so 
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so 
관련 문제