2016-02-02 35 views
0

我正嘗試在wordpress中使用htaccess將我的上傳文件夾重定向到我的s3存儲桶,但它不工作。我網站上的所有圖片仍然通過服務器在本地提供,而不是鏈接到存儲分區。使用.htaccess重定向wordpress上傳文件夾到s3存儲桶

這是我的htaccess文件:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

RewriteEngine On 
RewriteRule ^wp-content/uploads/(.*)$ https://BUCKET.s3.amazonaws.com/wp-content/uploads/$1 [L] 

# BEGIN W3TC CDN 
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$"> 
<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 
</FilesMatch> 
# END W3TC CDN 
+1

我會建議使用[W3的總緩存(https://wordpress.org/plugins/w3-total-cache/),它內置了這個功能,並且[這裏有一個教程(HTTPS:/ /www.elegantthemes.com/blog/tips-tricks/how-to-use-amazon-s3-and-cloudfront-with-wordpress)。 – APAD1

+0

我正在使用它。它會在單個帖子中替換它,但不會在我的主題主頁縮略圖 – user2570937

回答

1

有幾個問題。你需要把規則高於你的wordpress規則,因爲wordpress規則路由請求index.php。 接下來,您將需要使用mod_proxy並使用[P] flag,因爲無論在重寫過程中沒有指定重定向,Apache都會執行此操作,因爲替換網址是新域。所以Apache將執行重定向。因此使用[P] flag應該代理內容而不是重定向。這應該完成你所需要的。

RewriteEngine On 
RewriteRule ^wp-content/uploads/(.*)$ https://BUCKET.s3.amazonaws.com/wp-content/uploads/$1 [P] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
+0

'mod_proxy'中導致本地服務器在將其返回給客戶端之前從該桶中獲取圖像,從而增加服務器的負擔,不是嗎?這將無法實現在S3上託管文件的全部目的。 –

+0

'這會打敗S3上託管文件的全部目的@FabienSnauwaert其實你不知道他的目的是什麼。在s3上託管有很多原因。安全,無限的磁盤空間,冗餘等問題是要求協助代碼,而不是他應該如何使用s3與wordpress。你的評論應該針對他的問題。我只解釋了它爲什麼不起作用。 –

相關問題