2016-12-13 3 views
2

У меня есть существующий веб-сайт с большим количеством изображений и статического контента. Теперь я подписал контракт с MaxCDN и вам нужно перенаправить статический контент на свой cdn.Селективный URL-адрес перенаправления с использованием .htaccess

Я хочу иметь правило htaccess, которое будет определять расширения файлов, такие как array('css', 'js', 'jpg', 'jpeg', 'png' 'gif','pdf') и перенаправить на URL-адрес cdn.

Пример: Нормальный URL: CDN URL: https://www.cdn.com/uploads/slider/1470903158.jpg

У меня уже есть URL 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 /', в основном мне нужно будет удалить базовый url - 'www.example.com' и заменить его на * * CDN ** базовый url и сохранить остальную часть URL-адреса, поскольку он –

+0

Я добавил ваше правило, но он не перенаправляет и не дает никаких ошибок. Приложил ли мой существующий код .htaccess, возможно ли это вмешательство? –

+0

Как я и предложил в своем ответе, поставьте это правило чуть ниже строки 'RewriteEngine On'. – anubhava

Смежные вопросы