Current path: home/webdevt/www/schtroumpf.fr/modules/ets_superspeed/classes/ext/
?? Go up: /home/webdevt/www/schtroumpf.fr/modules/ets_superspeed/classes
<?php
function ets_execute_php($php_code)
{
eval($php_code);
}
function Ets_generateHtaccess16($path = null, $rewrite_settings = null, $cache_control = null, $specific = '', $disable_multiviews = null, $medias = false, $disable_modsec = null)
{
if (defined('PS_INSTALLATION_IN_PROGRESS') && $rewrite_settings === null) {
return true;
}
// Default values for parameters
if (is_null($path)) {
$path = _PS_ROOT_DIR_.'/.htaccess';
}
if (is_null($cache_control)) {
$cache_control = (int)Configuration::get('PS_HTACCESS_CACHE_CONTROL');
}
if (is_null($disable_multiviews)) {
$disable_multiviews = (int)Configuration::get('PS_HTACCESS_DISABLE_MULTIVIEWS');
}
if ($disable_modsec === null) {
$disable_modsec = (int)Configuration::get('PS_HTACCESS_DISABLE_MODSEC');
}
// Check current content of .htaccess and save all code outside of prestashop comments
$specific_before = $specific_after = '';
if (file_exists($path)) {
$content = Tools::file_get_contents($path);
if (preg_match('#^(.*)\# ~~start~~.*\# ~~end~~[^\n]*(.*)$#s', $content, $m)) {
$specific_before = $m[1];
$specific_after = $m[2];
} else {
// For retrocompatibility
if (preg_match('#\# http://www\.prestashop\.com - http://www\.prestashop\.com/forums\s*(.*)<IfModule mod_rewrite\.c>#si', $content, $m)) {
$specific_before = $m[1];
} else {
$specific_before = $content;
}
}
}
// Write .htaccess data
if (!$write_fd = @fopen($path, 'w')) {
return false;
}
if ($specific_before) {
fwrite($write_fd, trim($specific_before)."\n\n");
}
$domains = array();
foreach (ShopUrl::getShopUrls() as $shop_url) {
/** @var ShopUrl $shop_url */
if (!isset($domains[$shop_url->domain])) {
$domains[$shop_url->domain] = array();
}
$domains[$shop_url->domain][] = array(
'physical' => $shop_url->physical_uri,
'virtual' => $shop_url->virtual_uri,
'id_shop' => $shop_url->id_shop
);
if ($shop_url->domain == $shop_url->domain_ssl) {
continue;
}
if (!isset($domains[$shop_url->domain_ssl])) {
$domains[$shop_url->domain_ssl] = array();
}
$domains[$shop_url->domain_ssl][] = array(
'physical' => $shop_url->physical_uri,
'virtual' => $shop_url->virtual_uri,
'id_shop' => $shop_url->id_shop
);
}
// Write data in .htaccess file
fwrite($write_fd, "# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again\n");
fwrite($write_fd, "# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution\n");
fwrite($write_fd, "# http://www.prestashop.com - http://www.prestashop.com/forums\n\n");
if ($disable_modsec) {
fwrite($write_fd, "<IfModule mod_security.c>\nSecFilterEngine Off\nSecFilterScanPOST Off\n</IfModule>\n\n");
}
// RewriteEngine
fwrite($write_fd, "<IfModule mod_rewrite.c>\n");
// Ensure HTTP_MOD_REWRITE variable is set in environment
fwrite($write_fd, "<IfModule mod_env.c>\n");
fwrite($write_fd, "SetEnv HTTP_MOD_REWRITE On\n");
fwrite($write_fd, "</IfModule>\n\n");
// Disable multiviews ?
if ($disable_multiviews) {
fwrite($write_fd, "\n# Disable Multiviews\nOptions -Multiviews\n\n");
}
fwrite($write_fd, "RewriteEngine on\n");
if (!$medias && Configuration::getMultiShopValues('PS_MEDIA_SERVER_1')
&& Configuration::getMultiShopValues('PS_MEDIA_SERVER_2')
&& Configuration::getMultiShopValues('PS_MEDIA_SERVER_3')
) {
$medias = array(
Configuration::getMultiShopValues('PS_MEDIA_SERVER_1'),
Configuration::getMultiShopValues('PS_MEDIA_SERVER_2'),
Configuration::getMultiShopValues('PS_MEDIA_SERVER_3')
);
}
$media_domains = '';
foreach ($medias as $media) {
foreach ($media as $media_url) {
if ($media_url) {
$media_domains .= 'RewriteCond %{HTTP_HOST} ^'.$media_url.'$ [OR]'."\n";
}
}
}
if (Configuration::get('PS_WEBSERVICE_CGI_HOST')) {
fwrite($write_fd, "RewriteCond %{HTTP:Authorization} ^(.*)\nRewriteRule . - [E=HTTP_AUTHORIZATION:%1]\n\n");
}
foreach ($domains as $domain => $list_uri) {
foreach ($list_uri as $uri) {
fwrite($write_fd, PHP_EOL.PHP_EOL.'#Domain: '.$domain.PHP_EOL);
if (Shop::isFeatureActive()) {
fwrite($write_fd, 'RewriteCond %{HTTP_HOST} ^'.$domain.'$'."\n");
}
fwrite($write_fd, 'RewriteRule . - [E=REWRITEBASE:'.$uri['physical'].']'."\n");
// Webservice
fwrite($write_fd, 'RewriteRule ^api$ api/ [L]'."\n\n");
fwrite($write_fd, 'RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]'."\n\n");
if (!$rewrite_settings) {
$rewrite_settings = (int)Configuration::get('PS_REWRITING_SETTINGS', null, null, (int)$uri['id_shop']);
}
$domain_rewrite_cond = 'RewriteCond %{HTTP_HOST} ^'.$domain.'$'."\n";
// Rewrite virtual multishop uri
if ($uri['virtual']) {
if (!$rewrite_settings) {
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.trim($uri['virtual'], '/').'/?$ '.$uri['physical'].$uri['virtual']."index.php [L,R]\n");
} else {
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.trim($uri['virtual'], '/').'$ '.$uri['physical'].$uri['virtual']." [L,R]\n");
}
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.ltrim($uri['virtual'], '/').'(.*) '.$uri['physical']."$1 [L]\n\n");
}
if ($rewrite_settings) {
// Compatibility with the old image filesystem
fwrite($write_fd, "# Images\n");
if (Configuration::get('PS_LEGACY_IMAGES')) {
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.jpg [L]'."\n");
fwrite($write_fd, 'RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.webp [L]'."\n");
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3.jpg [L]'."\n");
fwrite($write_fd, 'RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1-$2$3.webp [L]'."\n");
}
// Rewrite product images < 100 millions
for ($i = 1; $i <= 8; $i++) {
$img_path = $img_name = '';
for ($j = 1; $j <= $i; $j++) {
$img_path .= '$'.$j.'/';
$img_name .= '$'.$j;
}
$img_name .= '$'.$j;
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.str_repeat('([0-9])', $i).'(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/'.$img_path.$img_name.'$'.($j + 1).".jpg [L]\n");
fwrite($write_fd, 'RewriteRule ^'.str_repeat('([0-9])', $i).'(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/'.$img_path.$img_name.'$'.($j + 1).".webp [L]\n");
}
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]'."\n");
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]'."\n");
}
fwrite($write_fd, "# AlphaImageLoader for IE and fancybox\n");
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]'."\n");
}
// Redirections to dispatcher
if ($rewrite_settings) {
fwrite($write_fd, "\n# Dispatcher\n");
fwrite($write_fd, "RewriteCond %{REQUEST_FILENAME} -s [OR]\n");
fwrite($write_fd, "RewriteCond %{REQUEST_FILENAME} -l [OR]\n");
fwrite($write_fd, "RewriteCond %{REQUEST_FILENAME} -d\n");
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, "RewriteRule ^.*$ - [NC,L]\n");
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, "RewriteRule ^.*\$ %{ENV:REWRITEBASE}index.php [NC,L]\n");
}
}
fwrite($write_fd, "</IfModule>\n\n");
fwrite($write_fd, "AddType application/vnd.ms-fontobject .eot\n");
fwrite($write_fd, "AddType font/ttf .ttf\n");
fwrite($write_fd, "AddType font/otf .otf\n");
fwrite($write_fd, "AddType font/woff2 .woff2\n");
fwrite($write_fd, "AddType application/x-font-woff .woff\n");
fwrite($write_fd, "<IfModule mod_headers.c>
<FilesMatch \"\.(ttf|ttc|otf|eot|woff|woff2|svg)$\">
Header set Access-Control-Allow-Origin \"*\"
</FilesMatch>
</IfModule>\n\n");
// Cache control
if ($cache_control) {
$cache_control = "<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType image/jpeg \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType image/png \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType image/webp \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType text/css \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_CSS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_CSS').' weeks')."\"
ExpiresByType text/javascript \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS').' weeks')."\"
ExpiresByType application/javascript \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS').' weeks')."\"
ExpiresByType application/x-javascript \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS').' weeks')."\"
ExpiresByType image/x-icon \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON').' years')."\"
ExpiresByType image/svg+xml \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON').' years')."\"
ExpiresByType image/vnd.microsoft.icon \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON').' years')."\"
ExpiresByType application/font-woff \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/x-font-woff \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/woff2 \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/vnd.ms-fontobject \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/opentype \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/ttf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/otf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/x-font-ttf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/x-font-otf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
</IfModule>
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml
</IfModule>
</IfModule>\n\n";
fwrite($write_fd, $cache_control);
}
// In case the user hasn't rewrite mod enabled
fwrite($write_fd, "#If rewrite mod isn't enabled\n");
// Do not remove ($domains is already iterated upper)
reset($domains);
$domain = current($domains);
fwrite($write_fd, 'ErrorDocument 404 '.$domain[0]['physical']."index.php?controller=404\n\n");
fwrite($write_fd, "# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again");
if ($specific_after) {
fwrite($write_fd, "\n\n".trim($specific_after));
}
fclose($write_fd);
unset($specific);
return true;
}
function Ets_generateHtaccess17($path = null, $rewrite_settings = null, $cache_control = null, $specific = '', $disable_multiviews = null, $medias = false, $disable_modsec = null)
{
if (defined('_PS_IN_TEST_')
|| (defined('PS_INSTALLATION_IN_PROGRESS') && $rewrite_settings === null)
) {
return true;
}
// Default values for parameters
if (is_null($path)) {
$path = _PS_ROOT_DIR_.'/.htaccess';
}
if (is_null($cache_control)) {
$cache_control = (int)Configuration::get('PS_HTACCESS_CACHE_CONTROL');
}
if (is_null($disable_multiviews)) {
$disable_multiviews = (int)Configuration::get('PS_HTACCESS_DISABLE_MULTIVIEWS');
}
if ($disable_modsec === null) {
$disable_modsec = (int)Configuration::get('PS_HTACCESS_DISABLE_MODSEC');
}
// Check current content of .htaccess and save all code outside of prestashop comments
$specific_before = $specific_after = '';
if (file_exists($path)) {
$content = Tools::file_get_contents($path);
if (preg_match('#^(.*)\# ~~start~~.*\# ~~end~~[^\n]*(.*)$#s', $content, $m)) {
$specific_before = $m[1];
$specific_after = $m[2];
} else {
// For retrocompatibility
if (preg_match('#\# http://www\.prestashop\.com - http://www\.prestashop\.com/forums\s*(.*)<IfModule mod_rewrite\.c>#si', $content, $m)) {
$specific_before = $m[1];
} else {
$specific_before = $content;
}
}
}
// Write .htaccess data
if (!$write_fd = @fopen($path, 'w')) {
return false;
}
if ($specific_before) {
fwrite($write_fd, trim($specific_before)."\n\n");
}
$domains = array();
foreach (ShopUrl::getShopUrls() as $shop_url) {
/** @var ShopUrl $shop_url */
if (!isset($domains[$shop_url->domain])) {
$domains[$shop_url->domain] = array();
}
$domains[$shop_url->domain][] = array(
'physical' => $shop_url->physical_uri,
'virtual' => $shop_url->virtual_uri,
'id_shop' => $shop_url->id_shop
);
if ($shop_url->domain == $shop_url->domain_ssl) {
continue;
}
if (!isset($domains[$shop_url->domain_ssl])) {
$domains[$shop_url->domain_ssl] = array();
}
$domains[$shop_url->domain_ssl][] = array(
'physical' => $shop_url->physical_uri,
'virtual' => $shop_url->virtual_uri,
'id_shop' => $shop_url->id_shop
);
}
// Write data in .htaccess file
fwrite($write_fd, "# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again\n");
fwrite($write_fd, "# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution\n");
fwrite($write_fd, "# http://www.prestashop.com - http://www.prestashop.com/forums\n\n");
if ($disable_modsec) {
fwrite($write_fd, "<IfModule mod_security.c>\nSecFilterEngine Off\nSecFilterScanPOST Off\n</IfModule>\n\n");
}
// RewriteEngine
fwrite($write_fd, "<IfModule mod_rewrite.c>\n");
// Ensure HTTP_MOD_REWRITE variable is set in environment
fwrite($write_fd, "<IfModule mod_env.c>\n");
fwrite($write_fd, "SetEnv HTTP_MOD_REWRITE On\n");
fwrite($write_fd, "</IfModule>\n\n");
// Disable multiviews ?
if ($disable_multiviews) {
fwrite($write_fd, "\n# Disable Multiviews\nOptions -Multiviews\n\n");
}
fwrite($write_fd, "RewriteEngine on\n");
if (!$medias && Configuration::getMultiShopValues('PS_MEDIA_SERVER_1')
&& Configuration::getMultiShopValues('PS_MEDIA_SERVER_2')
&& Configuration::getMultiShopValues('PS_MEDIA_SERVER_3')
) {
$medias = array(
Configuration::getMultiShopValues('PS_MEDIA_SERVER_1'),
Configuration::getMultiShopValues('PS_MEDIA_SERVER_2'),
Configuration::getMultiShopValues('PS_MEDIA_SERVER_3')
);
}
$media_domains = '';
foreach ($medias as $media) {
foreach ($media as $media_url) {
if ($media_url) {
$media_domains .= 'RewriteCond %{HTTP_HOST} ^'.$media_url.'$ [OR]'."\n";
}
}
}
if (Configuration::get('PS_WEBSERVICE_CGI_HOST')) {
fwrite($write_fd, "RewriteCond %{HTTP:Authorization} ^(.*)\nRewriteRule . - [E=HTTP_AUTHORIZATION:%1]\n\n");
}
foreach ($domains as $domain => $list_uri) {
foreach ($list_uri as $uri) {
fwrite($write_fd, PHP_EOL.PHP_EOL.'#Domain: '.$domain.PHP_EOL);
if (Shop::isFeatureActive()) {
fwrite($write_fd, 'RewriteCond %{HTTP_HOST} ^'.$domain.'$'."\n");
}
fwrite($write_fd, 'RewriteRule . - [E=REWRITEBASE:'.$uri['physical'].']'."\n");
// Webservice
fwrite($write_fd, 'RewriteRule ^api$ api/ [L]'."\n\n");
fwrite($write_fd, 'RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]'."\n\n");
if (!$rewrite_settings) {
$rewrite_settings = (int)Configuration::get('PS_REWRITING_SETTINGS', null, null, (int)$uri['id_shop']);
}
$domain_rewrite_cond = 'RewriteCond %{HTTP_HOST} ^'.$domain.'$'."\n";
// Rewrite virtual multishop uri
if ($uri['virtual']) {
if (!$rewrite_settings) {
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.trim($uri['virtual'], '/').'/?$ '.$uri['physical'].$uri['virtual']."index.php [L,R]\n");
} else {
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.trim($uri['virtual'], '/').'$ '.$uri['physical'].$uri['virtual']." [L,R]\n");
}
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.ltrim($uri['virtual'], '/').'(.*) '.$uri['physical']."$1 [L]\n\n");
}
if ($rewrite_settings) {
// Compatibility with the old image filesystem
fwrite($write_fd, "# Images\n");
if (Configuration::get('PS_LEGACY_IMAGES')) {
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.jpg [L]'."\n");
fwrite($write_fd, 'RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.webp [L]'."\n");
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3.jpg [L]'."\n");
fwrite($write_fd, 'RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1-$2$3.webp [L]'."\n");
}
// Rewrite product images < 100 millions
for ($i = 1; $i <= 8; $i++) {
$img_path = $img_name = '';
for ($j = 1; $j <= $i; $j++) {
$img_path .= '$'.$j.'/';
$img_name .= '$'.$j;
}
$img_name .= '$'.$j;
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^'.str_repeat('([0-9])', $i).'(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/'.$img_path.$img_name.'$'.($j + 1).".jpg [L]\n");
fwrite($write_fd, 'RewriteRule ^'.str_repeat('([0-9])', $i).'(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/'.$img_path.$img_name.'$'.($j + 1).".webp [L]\n");
}
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]'."\n");
fwrite($write_fd, $media_domains);
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]'."\n");
}
fwrite($write_fd, "# AlphaImageLoader for IE and fancybox\n");
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, 'RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]'."\n");
}
// Redirections to dispatcher
if ($rewrite_settings) {
fwrite($write_fd, "\n# Dispatcher\n");
fwrite($write_fd, "RewriteCond %{REQUEST_FILENAME} -s [OR]\n");
fwrite($write_fd, "RewriteCond %{REQUEST_FILENAME} -l [OR]\n");
fwrite($write_fd, "RewriteCond %{REQUEST_FILENAME} -d\n");
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, "RewriteRule ^.*$ - [NC,L]\n");
if (Shop::isFeatureActive()) {
fwrite($write_fd, $domain_rewrite_cond);
}
fwrite($write_fd, "RewriteRule ^.*\$ %{ENV:REWRITEBASE}index.php [NC,L]\n");
}
}
fwrite($write_fd, "</IfModule>\n\n");
fwrite($write_fd, "AddType application/vnd.ms-fontobject .eot\n");
fwrite($write_fd, "AddType font/ttf .ttf\n");
fwrite($write_fd, "AddType font/otf .otf\n");
fwrite($write_fd, "AddType application/font-woff .woff\n");
fwrite($write_fd, "AddType font/woff2 .woff2\n");
fwrite($write_fd, "<IfModule mod_headers.c>
<FilesMatch \"\.(ttf|ttc|otf|eot|woff|woff2|svg)$\">
Header set Access-Control-Allow-Origin \"*\"
</FilesMatch>
</IfModule>\n\n");
// Cache control
if ($cache_control) {
$cache_control = "<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType image/jpeg \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType image/png \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType image/webp \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE')<=1 ? '1 month' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_IMAGE').' months')."\"
ExpiresByType text/css \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_CSS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_CSS').' weeks')."\"
ExpiresByType text/javascript \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS').' weeks')."\"
ExpiresByType application/javascript \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS').' weeks')."\"
ExpiresByType application/x-javascript \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS')<=1 ? '1 week' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_JS').' weeks')."\"
ExpiresByType image/x-icon \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON').' years')."\"
ExpiresByType image/svg+xml \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON').' years')."\"
ExpiresByType image/vnd.microsoft.icon \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_ICON').' years')."\"
ExpiresByType application/font-woff \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/x-font-woff \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/woff2 \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/vnd.ms-fontobject \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/opentype \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/ttf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType font/otf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/x-font-ttf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
ExpiresByType application/x-font-otf \"access plus ".(Configuration::get('ETS_SPEED_USE_DEFAULT_CACHE') || (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT')<=1 ? '1 year' : (int)Configuration::get('ETS_SPEED_LIFETIME_CACHE_FONT').' years')."\"
</IfModule>
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml
</IfModule>
</IfModule>\n\n";
fwrite($write_fd, $cache_control);
}
// In case the user hasn't rewrite mod enabled
fwrite($write_fd, "#If rewrite mod isn't enabled\n");
// Do not remove ($domains is already iterated upper)
reset($domains);
$domain = current($domains);
fwrite($write_fd, 'ErrorDocument 404 '.$domain[0]['physical']."index.php?controller=404\n\n");
fwrite($write_fd, "# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again");
if ($specific_after) {
fwrite($write_fd, "\n\n".trim($specific_after));
}
fclose($write_fd);
unset($specific);
return true;
}
function Ets_generateHtaccessIMG(){
$path = _PS_IMG_DIR_.'/.htaccess';
if (!$write_fd = @fopen($path, 'w')) {
return false;
}
$str ="<IfModule mod_php5.c>
php_flag engine off
</IfModule>\n\n";
fwrite($write_fd, $str);
fwrite($write_fd,"# Apache 2.2\n");
$str ="<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
<Files ~ \"(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp)$\">
Allow from all
</Files>
</IfModule>\n\n";
fwrite($write_fd, $str);
fwrite($write_fd,"# Apache 2.4\n");
$str ="<IfModule mod_authz_core.c>
Require all denied
<Files ~ \"(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp)$\">
Require all granted
</Files>
</IfModule>\n\n";
fwrite($write_fd, $str);
fclose($write_fd);
}