2016-12-13 57 views
2

我有一個包含大量圖像和靜態內容的現有網站。我現在已經註冊了MaxCDN,需要將靜態內容重定向到他們的cdn。使用.htaccess重定向選擇性網址

我想有一個htaccess規則,它將檢測文件擴展名如array('css', 'js', 'jpg', 'jpeg', 'png' 'gif','pdf')並重定向到cdn url。

: 普通網址: CDN網址:https://www.cdn.com/uploads/slider/1470903158.jpg

我已經有了CDN網址定義我區。我會完成核心base_url()重寫以執行相同的功能,但不幸的是,該網站不在CI中,重新開始將不可行。我認爲在目前的情況下,使用.htaccess做我的最好選擇。不幸的是,當談到.htacces時,我幾乎無所適從。

這是我目前的.htaccess文件

<IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteBase/

     # Removes index.php from ExpressionEngine URLs 
     RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] 
     RewriteCond %{REQUEST_URI} !/system/.* [NC] 
     RewriteRule (.?)index\.php/(.*) /$1$2 [R=301,NE,L] 

     # Directs all EE web requests through the site index file 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule> 


# BEGIN Expires 
<ifModule mod_expires.c> 
ExpiresActive On 
ExpiresDefault "access plus 1 seconds" 
ExpiresByType text/html "access plus 1 seconds" 
ExpiresByType image/gif "access plus 2592000 seconds" 
ExpiresByType image/jpeg "access plus 2592000 seconds" 
ExpiresByType image/png "access plus 2592000 seconds" 
ExpiresByType text/css "access plus 604800 seconds" 
ExpiresByType text/javascript "access plus 216000 seconds" 
ExpiresByType application/x-javascript "access plus 216000 seconds" 
</ifModule> 
# END Expires 


#The following line is enough for .js and .css 
    AddOutputFilter DEFLATE js css 

    #The following line also enables compression by file content type, for the following list of Content-Type 
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml 

    #The following lines are to avoid bugs with some browsers 
    BrowserMatch ^Mozilla/4 gzip-only-text/html 
    BrowserMatch ^Mozilla/4\.0[678] no-gzip 
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
    Header append Vary: Accept-Encoding 

回答

2

您可以使用此重定向規則作爲你的第一個規則:

RewriteEngine On 

RewriteRule ^.+\.(?:jpe?g|gif|pdf|css|js)$ https://www.cdn.com%{REQUEST_URI} [L,R=301,NC,NE] 

請注意,雖然此規則將嚴格按照工作和執行它不會解決CDN問題。 CDN只會捕獲http頭200的內容而不會重定向(301)。因此,即使您啓用了這種機會取決於您的CDN提供商,該網站也不會加載或者即使加載它也會破壞CDN的目的,因爲如果所有請求都轉到您的原始地址,然後被重定向到CDN數據中心,則不會有速度增加。

+0

感謝您的答案,但PLZ認爲並非所有的靜態內容將在'uploads/slider /'文件夾下,基本上我需要刪除基本網址 - 「www.example.com」並將其替換爲* * CDN **基本網址,並保持網址的其餘部分,因爲它是 –

+0

我添加了您的規則,但它不重定向也不是它給任何錯誤。已附加我現有的.htaccess代碼是否有可能干擾? –

+0

正如我在我的回答中所建議的,將此規則放在'RewriteEngine On'行下面。 – anubhava