options = $this->getOptions(); $this->setCronJobSettings(); $this->addButtonOnEditor(); add_action('admin_enqueue_scripts', array($this, 'addJavaScript')); add_filter('plugin_locale', array($this, 'my_plugin_locale_filter'), 10, 2); } function my_plugin_locale_filter($locale, $domain){ if($domain === 'wp-fastest-cache'){ if(!isset($this->options->wpFastestCacheLanguage)){ return "en_US"; } $locale = $this->options->wpFastestCacheLanguage; if(file_exists(WPFC_MAIN_PATH."languages/wp-fastest-cache-".$locale.".mo")){ return $locale; }else{ return "en_US"; } } return $locale; } public function create_auto_cache_timeout($recurrance, $interval){ $exist_cronjob = false; $wpfc_timeout_number = 0; $crons = _get_cron_array(); foreach ((array)$crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ $wpfc_timeout_number++; foreach ( (array) $events as $event_key => $event ) { $schedules = wp_get_schedules(); if(isset($event["args"]) && isset($event["args"][0])){ if($event["args"][0] == '{"prefix":"all","content":"all"}'){ if($schedules[$event["schedule"]]["interval"] <= $interval){ $exist_cronjob = true; } } } } } } } } if(!$exist_cronjob){ $args = array("prefix" => "all", "content" => "all"); wp_schedule_event(time(), $recurrance, "wp_fastest_cache_".$wpfc_timeout_number, array(json_encode($args))); } } public function get_premium_version(){ $wpfc_premium_version = ""; if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/wpFastestCachePremium.php")){ if($data = @file_get_contents(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/wpFastestCachePremium.php")){ preg_match("/Version:\s*(.+)/", $data, $out); if(isset($out[1]) && $out[1]){ $wpfc_premium_version = trim($out[1]); } } } return $wpfc_premium_version; } public function addButtonOnEditor(){ add_action('admin_print_footer_scripts', array($this, 'addButtonOnQuicktagsEditor')); add_action('init', array($this, 'myplugin_buttonhooks')); } public function checkShortCode($content){ preg_match("/\[wpfcNOT\]/", $content, $wpfcNOT); if(count($wpfcNOT) > 0){ if(is_single() || is_page()){ $this->blockCache = true; } $content = str_replace("[wpfcNOT]", "", $content); } return $content; } public function myplugin_buttonhooks() { // Only add hooks when the current user has permissions AND is in Rich Text editor mode if (current_user_can( 'manage_options' )) { add_filter("mce_external_plugins", array($this, "myplugin_register_tinymce_javascript")); add_filter('mce_buttons', array($this, 'myplugin_register_buttons')); } } // Load the TinyMCE plugin : editor_plugin.js (wp2.5) public function myplugin_register_tinymce_javascript($plugin_array) { $plugin_array['wpfc'] = plugins_url('../js/button.js?v='.time(),__file__); return $plugin_array; } public function myplugin_register_buttons($buttons) { array_push($buttons, 'wpfc'); return $buttons; } public function addButtonOnQuicktagsEditor(){ if (wp_script_is('quicktags') && current_user_can( 'manage_options' )){ ?> notify(array("The plugin does not work with Multisite.\n Please click here to learn how to enable it.", "error")); // return 0; // } // } if(current_user_can('manage_options')){ if($_POST["wpFastestCachePage"] == "options"){ $this->exclude_urls(); $this->saveOption(); }else if($_POST["wpFastestCachePage"] == "deleteCache"){ $this->deleteCache(); }else if($_POST["wpFastestCachePage"] == "deleteCssAndJsCache"){ $this->deleteCache(true); }else if($_POST["wpFastestCachePage"] == "cacheTimeout"){ $this->addCacheTimeout(); } }else{ die("Forbidden"); } } } } public function exclude_urls(){ // to exclude wishlist url of YITH WooCommerce Wishlist if($this->isPluginActive('yith-woocommerce-wishlist/init.php')){ $wishlist_page_id = get_option("yith_wcwl_wishlist_page_id"); $permalink = urldecode(get_permalink($wishlist_page_id)); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $url = trim($out[1], "/"); } } if(isset($url) && $url){ $rules_std = array(); $rules_json = get_option("WpFastestCacheExclude"); $new_rule = new stdClass; $new_rule->prefix = "exact"; $new_rule->content = $url; $new_rule->type = "page"; if($rules_json === false){ array_push($rules_std, $new_rule); add_option("WpFastestCacheExclude", json_encode($rules_std), null, "yes"); }else{ $rules_std = json_decode($rules_json); if(!is_array($rules_std)){ $rules_std = array(); } if(!in_array($new_rule, $rules_std)){ array_push($rules_std, $new_rule); update_option("WpFastestCacheExclude", json_encode($rules_std)); } } } } public function addCacheTimeout(){ if(isset($_POST["wpFastestCacheTimeOut"])){ if($_POST["wpFastestCacheTimeOut"]){ if(isset($_POST["wpFastestCacheTimeOutHour"]) && is_numeric($_POST["wpFastestCacheTimeOutHour"])){ if(isset($_POST["wpFastestCacheTimeOutMinute"]) && is_numeric($_POST["wpFastestCacheTimeOutMinute"])){ $selected = mktime($_POST["wpFastestCacheTimeOutHour"], $_POST["wpFastestCacheTimeOutMinute"], 0, date("n"), date("j"), date("Y")); if($selected > time()){ $timestamp = $selected; }else{ if(time() - $selected < 60){ $timestamp = $selected + 60; }else{ // if selected time is less than now, 24hours is added $timestamp = $selected + 24*60*60; } } wp_clear_scheduled_hook($this->slug()); wp_schedule_event($timestamp, $_POST["wpFastestCacheTimeOut"], $this->slug()); }else{ echo "Minute was not set"; exit; } }else{ echo "Hour was not set"; exit; } }else{ wp_clear_scheduled_hook($this->slug()); } } } public function setCronJobSettings(){ if(wp_next_scheduled($this->slug())){ $this->cronJobSettings["period"] = wp_get_schedule($this->slug()); $this->cronJobSettings["time"] = wp_next_scheduled($this->slug()); } } public function addMenuPage(){ add_action('admin_menu', array($this, 'register_my_custom_menu_page')); } public function addJavaScript(){ wp_enqueue_script("jquery-ui-draggable"); wp_enqueue_script("jquery-ui-position"); wp_enqueue_script("jquery-ui-sortable"); wp_enqueue_script("wpfc-dialog", plugins_url("wp-fastest-cache/js/dialog.js"), array(), time(), false); wp_enqueue_script("wpfc-dialog-new", plugins_url("wp-fastest-cache/js/dialog_new.js"), array(), time(), false); wp_enqueue_script("wpfc-cdn", plugins_url("wp-fastest-cache/js/cdn/cdn.js"), array(), time(), false); wp_enqueue_script("wpfc-schedule", plugins_url("wp-fastest-cache/js/schedule.js"), array(), time(), true); wp_enqueue_script("wpfc-db", plugins_url("wp-fastest-cache/js/db.js"), array(), time(), true); if(class_exists("WpFastestCacheImageOptimisation")){ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/js/statics.js")){ wp_enqueue_script("wpfc-statics", plugins_url("wp-fastest-cache-premium/pro/js/statics.js"), array(), time(), false); } if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/js/premium.js")){ wp_enqueue_script("wpfc-premium", plugins_url("wp-fastest-cache-premium/pro/js/premium.js"), array(), time(), true); } } } public function saveOption(){ unset($_POST["wpFastestCachePage"]); unset($_POST["option_page"]); unset($_POST["action"]); unset($_POST["_wpnonce"]); unset($_POST["_wp_http_referer"]); $data = json_encode($_POST); //for optionsPage() $_POST is array and json_decode() converts to stdObj $this->options = json_decode($data); $this->systemMessage = $this->modifyHtaccess($_POST); if(isset($this->systemMessage[1]) && $this->systemMessage[1] != "error"){ if($message = $this->checkCachePathWriteable()){ if(is_array($message)){ $this->systemMessage = $message; }else{ if(isset($this->options->wpFastestCachePreload)){ $this->set_preload(); }else{ delete_option("WpFastestCachePreLoad"); wp_clear_scheduled_hook("wp_fastest_cache_Preload"); } if(get_option("WpFastestCache")){ update_option("WpFastestCache", $data); }else{ add_option("WpFastestCache", $data, null, "yes"); } } } } $this->notify($this->systemMessage); } public function checkCachePathWriteable(){ $message = array(); if(!is_dir($this->getWpContentDir("/cache/"))){ if (@mkdir($this->getWpContentDir("/cache/"), 0755, true)){ // }else{ array_push($message, "- ".$this->getWpContentDir("/cache/")." is needed to be created"); } }else{ if (@mkdir($this->getWpContentDir("/cache/testWpFc/"), 0755, true)){ rmdir($this->getWpContentDir("/cache/testWpFc/")); }else{ array_push($message, "- ".$this->getWpContentDir("/cache/")." permission has to be 755"); } } if(!is_dir($this->getWpContentDir("/cache/all/"))){ if (@mkdir($this->getWpContentDir("/cache/all/"), 0755, true)){ // }else{ array_push($message, "- ".$this->getWpContentDir("/cache/all/")." is needed to be created"); } }else{ if (@mkdir($this->getWpContentDir("/cache/all/testWpFc/"), 0755, true)){ rmdir($this->getWpContentDir("/cache/all/testWpFc/")); }else{ array_push($message, "- ".$this->getWpContentDir("/cache/all/")." permission has to be 755"); } } if(count($message) > 0){ return array(implode("
", $message), "error"); }else{ return true; } } public function modifyHtaccess($post){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"])){ // return array("The plugin does not work with Microsoft IIS. Only with Apache", "error"); // } // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){ // return array("The plugin does not work with Nginx. Only with Apache", "error"); // } if(!file_exists($path.".htaccess")){ if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && (preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"]) || preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"]))){ // }else{ return array(" Read More", "error"); } } if($this->isPluginActive('wp-postviews/wp-postviews.php')){ $wp_postviews_options = get_option("views_options"); $wp_postviews_options["use_ajax"] = true; update_option("views_options", $wp_postviews_options); if(!WP_CACHE){ if($wp_config = @file_get_contents(ABSPATH."wp-config.php")){ $wp_config = str_replace("\$table_prefix", "define('WP_CACHE', true);\n\$table_prefix", $wp_config); if(!@file_put_contents(ABSPATH."wp-config.php", $wp_config)){ return array("define('WP_CACHE', true); is needed to be added into wp-config.php", "error"); } }else{ return array("define('WP_CACHE', true); is needed to be added into wp-config.php", "error"); } } } if(get_option('template') == "Divi"){ // Divi Theme - Static CSS File Generation if($et_divi = get_option("et_divi")){ if(isset($et_divi["et_pb_static_css_file"]) && $et_divi["et_pb_static_css_file"] == "on"){ return array("You have to disable the Static CSS File Generation option of Divi Theme", "error"); } } } if(file_exists($path.".htaccess")){ $htaccess = @file_get_contents($path.".htaccess"); }else{ $htaccess = ""; } // if(defined('DONOTCACHEPAGE')){ // return array("DONOTCACHEPAGE ", "error"); // }else if(!get_option('permalink_structure')){ return array("You have to set permalinks", "error"); }else if($res = $this->checkSuperCache($path, $htaccess)){ return $res; }else if($this->isPluginActive('cookie-notice/cookie-notice.php')){ return array("Cookie Notice & Compliance for GDPR / CCPA needs to be deactivated", "error"); }else if($this->isPluginActive('fast-velocity-minify/fvm.php')){ return array("Fast Velocity Minify needs to be deactivated", "error"); }else if($this->isPluginActive('far-future-expiration/far-future-expiration.php')){ return array("Far Future Expiration Plugin needs to be deactivated", "error"); }else if($this->isPluginActive('sg-cachepress/sg-cachepress.php')){ return array("SG Optimizer needs to be deactived", "error"); }else if($this->isPluginActive('adrotate/adrotate.php') || $this->isPluginActive('adrotate-pro/adrotate.php')){ return $this->warningIncompatible("AdRotate"); }else if($this->isPluginActive('mobilepress/mobilepress.php')){ return $this->warningIncompatible("MobilePress", array("name" => "WPtouch Mobile", "url" => "https://wordpress.org/plugins/wptouch/")); }else if($this->isPluginActive('speed-booster-pack/speed-booster-pack.php')){ return array("Speed Booster Pack needs to be deactivated
", "error"); }else if($this->isPluginActive('cdn-enabler/cdn-enabler.php')){ return array("CDN Enabler needs to be deactivated
This plugin has aldready CDN feature", "error"); }else if($this->isPluginActive('wp-performance-score-booster/wp-performance-score-booster.php')){ return array("WP Performance Score Booster needs to be deactivated
This plugin has aldready Gzip, Leverage Browser Caching features", "error"); }else if($this->isPluginActive('bwp-minify/bwp-minify.php')){ return array("Better WordPress Minify needs to be deactivated
This plugin has aldready Minify feature", "error"); }else if($this->isPluginActive('check-and-enable-gzip-compression/richards-toolbox.php')){ return array("Check and Enable GZIP compression needs to be deactivated
This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('gzippy/gzippy.php')){ return array("GZippy needs to be deactivated
This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('gzip-ninja-speed-compression/gzip-ninja-speed.php')){ return array("GZip Ninja Speed Compression needs to be deactivated
This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('wordpress-gzip-compression/ezgz.php')){ return array("WordPress Gzip Compression needs to be deactivated
This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('filosofo-gzip-compression/filosofo-gzip-compression.php')){ return array("GZIP Output needs to be deactivated
This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('head-cleaner/head-cleaner.php')){ return array("Head Cleaner needs to be deactivated", "error"); }else if($this->isPluginActive('far-future-expiry-header/far-future-expiration.php')){ return array("Far Future Expiration Plugin needs to be deactivated", "error"); }else if(is_writable($path.".htaccess")){ $htaccess = $this->insertWebp($htaccess); $htaccess = $this->insertLBCRule($htaccess, $post); $htaccess = $this->insertGzipRule($htaccess, $post); $htaccess = $this->insertRewriteRule($htaccess, $post); $htaccess = $this->to_move_gtranslate_rules($htaccess); file_put_contents($path.".htaccess", $htaccess); }else{ return array(__("Options have been saved", 'wp-fastest-cache'), "updated"); //return array(".htaccess is not writable", "error"); } return array(__("Options have been saved", 'wp-fastest-cache'), "updated"); } public function to_move_gtranslate_rules($htaccess){ preg_match("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", $htaccess, $gtranslate); if(isset($gtranslate[0])){ $htaccess = preg_replace("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", "", $htaccess); $htaccess = $gtranslate[0]."\n".$htaccess; } return $htaccess; } public function warningIncompatible($incompatible, $alternative = false){ if($alternative){ return array($incompatible."
".$alternative["name"]."", "error"); }else{ return array($incompatible." ", "error"); } } public function insertWebp($htaccess){ if(class_exists("WpFastestCachePowerfulHtml")){ if(defined("WPFC_DISABLE_WEBP") && WPFC_DISABLE_WEBP){ $webp = false; }else{ $webp = true; $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ $std_obj = json_decode($cdn_values); foreach($std_obj as $key => $value){ if($value->id == "cloudflare"){ include_once('cdn.php'); CdnWPFC::cloudflare_clear_cache(); $res = CdnWPFC::cloudflare_get_zone_id($value->cdnurl, $value->originurl); if($res["success"] && ($res["plan"] == "free")){ $webp = false; } break; } } } } }else{ $webp = false; } if($webp){ $basename = "$1.webp"; /* This part for sub-directory installation WordPress Address (URL): site_url() Site Address (URL): home_url() */ if(preg_match("/https?\:\/\/[^\/]+\/(.+)/", site_url(), $siteurl_base_name)){ if(preg_match("/https?\:\/\/[^\/]+\/(.+)/", home_url(), $homeurl_base_name)){ /* site_url() return http://example.com/sub-directory home_url() returns http://example.com/sub-directory */ $homeurl_base_name[1] = trim($homeurl_base_name[1], "/"); $siteurl_base_name[1] = trim($siteurl_base_name[1], "/"); if($homeurl_base_name[1] == $siteurl_base_name[1]){ if(preg_match("/".preg_quote($homeurl_base_name[1], "/")."$/", trim(ABSPATH, "/"))){ $basename = $homeurl_base_name[1]."/".$basename; } }else{ if(!preg_match("/\//", $homeurl_base_name[1]) && !preg_match("/\//", $siteurl_base_name[1])){ /* site_url() return http://example.com/wordpress home_url() returns http://example.com/blog */ $basename = $homeurl_base_name[1]."/".$basename; $tmp_ABSPATH = str_replace(" ", "\ ", ABSPATH); if(preg_match("/\/$/", $tmp_ABSPATH)){ $tmp_ABSPATH = rtrim($tmp_ABSPATH, "/"); $tmp_ABSPATH = dirname($tmp_ABSPATH)."/".$homeurl_base_name[1]."/"; } } } }else{ /* site_url() return http://example.com/sub-directory home_url() returns http://example.com/ */ $siteurl_base_name[1] = trim($siteurl_base_name[1], "/"); $basename = $siteurl_base_name[1]."/".$basename; } } if(ABSPATH == "//"){ $RewriteCond = "RewriteCond %{DOCUMENT_ROOT}/".$basename." -f"."\n"; }else{ // to escape spaces if(!isset($tmp_ABSPATH)){ $tmp_ABSPATH = str_replace(" ", "\ ", ABSPATH); } $RewriteCond = "RewriteCond %{DOCUMENT_ROOT}/".$basename." -f [or]"."\n"; $RewriteCond = $RewriteCond."RewriteCond ".$tmp_ABSPATH."$1.webp -f"."\n"; } $data = "# BEGIN WEBPWpFastestCache"."\n". ""."\n". "RewriteEngine On"."\n". "RewriteCond %{HTTP_ACCEPT} image/webp"."\n". "RewriteCond %{REQUEST_URI} \.(jpe?g|png)"."\n". $RewriteCond. "RewriteRule ^(.*) \"/".$basename."\" [L]"."\n". ""."\n". ""."\n". "Header append Vary Accept env=REDIRECT_accept"."\n". ""."\n". "AddType image/webp .webp"."\n". "# END WEBPWpFastestCache"."\n"; if(!preg_match("/BEGIN\s*WEBPWpFastestCache/", $htaccess)){ $htaccess = $data.$htaccess; } return $htaccess; }else{ $htaccess = preg_replace("/#\s?BEGIN\s?WEBPWpFastestCache.*?#\s?END\s?WEBPWpFastestCache/s", "", $htaccess); return $htaccess; } } public function insertLBCRule($htaccess, $post){ if(isset($post["wpFastestCacheLBC"]) && $post["wpFastestCacheLBC"] == "on"){ $data = "# BEGIN LBCWpFastestCache"."\n". ''."\n". ''."\n". 'AddType application/font-woff2 .woff2'."\n". 'AddType application/x-font-opentype .otf'."\n". 'ExpiresActive On'."\n". 'ExpiresDefault A0'."\n". 'ExpiresByType video/webm A10368000'."\n". 'ExpiresByType video/ogg A10368000'."\n". 'ExpiresByType video/mp4 A10368000'."\n". 'ExpiresByType image/avif A10368000'."\n". 'ExpiresByType image/webp A10368000'."\n". 'ExpiresByType image/gif A10368000'."\n". 'ExpiresByType image/png A10368000'."\n". 'ExpiresByType image/jpg A10368000'."\n". 'ExpiresByType image/jpeg A10368000'."\n". 'ExpiresByType image/ico A10368000'."\n". 'ExpiresByType image/svg+xml A10368000'."\n". 'ExpiresByType text/css A10368000'."\n". 'ExpiresByType text/javascript A10368000'."\n". 'ExpiresByType application/javascript A10368000'."\n". 'ExpiresByType application/x-javascript A10368000'."\n". 'ExpiresByType application/font-woff2 A10368000'."\n". 'ExpiresByType application/x-font-opentype A10368000'."\n". 'ExpiresByType application/x-font-truetype A10368000'."\n". ''."\n". ''."\n". 'Header set Expires "max-age=A10368000, public"'."\n". 'Header unset ETag'."\n". 'Header set Connection keep-alive'."\n". 'FileETag None'."\n". ''."\n". ''."\n". "# END LBCWpFastestCache"."\n"; if(!preg_match("/BEGIN\s*LBCWpFastestCache/", $htaccess)){ return $data.$htaccess; }else{ return $htaccess; } }else{ //delete levere browser caching $htaccess = preg_replace("/#\s?BEGIN\s?LBCWpFastestCache.*?#\s?END\s?LBCWpFastestCache/s", "", $htaccess); return $htaccess; } } public function insertGzipRule($htaccess, $post){ if(isset($post["wpFastestCacheGzip"]) && $post["wpFastestCacheGzip"] == "on"){ $data = "# BEGIN GzipWpFastestCache"."\n". ""."\n". "AddType x-font/woff .woff"."\n". "AddType x-font/ttf .ttf"."\n". "AddOutputFilterByType DEFLATE image/svg+xml"."\n". "AddOutputFilterByType DEFLATE text/plain"."\n". "AddOutputFilterByType DEFLATE text/html"."\n". "AddOutputFilterByType DEFLATE text/xml"."\n". "AddOutputFilterByType DEFLATE text/css"."\n". "AddOutputFilterByType DEFLATE text/javascript"."\n". "AddOutputFilterByType DEFLATE application/xml"."\n". "AddOutputFilterByType DEFLATE application/xhtml+xml"."\n". "AddOutputFilterByType DEFLATE application/rss+xml"."\n". "AddOutputFilterByType DEFLATE application/javascript"."\n". "AddOutputFilterByType DEFLATE application/x-javascript"."\n". "AddOutputFilterByType DEFLATE application/x-font-ttf"."\n". "AddOutputFilterByType DEFLATE x-font/ttf"."\n". "AddOutputFilterByType DEFLATE application/vnd.ms-fontobject"."\n". "AddOutputFilterByType DEFLATE font/opentype font/ttf font/eot font/otf"."\n". ""."\n"; if(defined("WPFC_GZIP_FOR_COMBINED_FILES") && WPFC_GZIP_FOR_COMBINED_FILES){ $data = $data."\n".''."\n". "# to zip the combined css and js files"."\n\n". "RewriteEngine On"."\n". "RewriteCond %{HTTP:Accept-encoding} gzip"."\n". "RewriteCond %{REQUEST_FILENAME}\.gz -s"."\n". "RewriteRule ^(.*)\.(css|js) $1\.$2\.gz [QSA]"."\n\n". "# to revent double gzip and give the correct mime-type"."\n\n". "RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=FORCE_GZIP]"."\n". "RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=FORCE_GZIP]"."\n". "Header set Content-Encoding gzip env=FORCE_GZIP"."\n". ""."\n"; } $data = $data."# END GzipWpFastestCache"."\n"; $htaccess = preg_replace("/\s*\#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache\s*/s", "", $htaccess); return $data.$htaccess; }else{ //delete gzip rules $htaccess = preg_replace("/\s*\#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache\s*/s", "", $htaccess); return $htaccess; } } public function insertRewriteRule($htaccess, $post){ if(isset($post["wpFastestCacheStatus"]) && $post["wpFastestCacheStatus"] == "on"){ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); $htaccess = $this->getHtaccess().$htaccess; }else{ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); $this->deleteCache(); } if(defined("WPFC_SERVE_ONLY_VIA_CACHE") && WPFC_SERVE_ONLY_VIA_CACHE){ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); } return $htaccess; } public function prefixRedirect(){ $forceTo = ""; if(defined("WPFC_DISABLE_REDIRECTION") && WPFC_DISABLE_REDIRECTION){ return $forceTo; } if(preg_match("/^https:\/\//", home_url())){ if(preg_match("/^https:\/\/www\./", home_url())){ $forceTo = "\nRewriteCond %{HTTPS} =on"."\n". "RewriteCond %{HTTP_HOST} ^www.".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n"; }else{ $forceTo = "\nRewriteCond %{HTTPS} =on"."\n". "RewriteCond %{HTTP_HOST} ^".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n"; } }else{ if(preg_match("/^http:\/\/www\./", home_url())){ $forceTo = "\nRewriteCond %{HTTP_HOST} ^".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n". "RewriteRule ^(.*)$ ".preg_quote(home_url(), "/")."\/$1 [R=301,L]"."\n"; }else{ $forceTo = "\nRewriteCond %{HTTP_HOST} ^www.".str_replace("www.", "", $_SERVER["HTTP_HOST"])." [NC]"."\n". "RewriteRule ^(.*)$ ".preg_quote(home_url(), "/")."\/$1 [R=301,L]"."\n"; } } return $forceTo; } public function getHtaccess(){ $mobile = ""; $loggedInUser = ""; $ifIsNotSecure = ""; $trailing_slash_rule = ""; $consent_cookie = ""; $cache_path = '/cache/all/'; if($this->isPluginActive('sitepress-multilingual-cms/sitepress.php')){ $language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type'); if($language_negotiation_type == 2){ $cache_path = '/cache/%{HTTP_HOST}/all/'; } } if($this->isPluginActive('polylang/polylang.php') || $this->isPluginActive('polylang-pro/polylang.php')){ $polylang_settings = get_option("polylang"); if(isset($polylang_settings["force_lang"])){ if($polylang_settings["force_lang"] == 2 || $polylang_settings["force_lang"] == 3){ // The language is set from the subdomain name in pretty permalinks // The language is set from different domains $cache_path = '/cache/%{HTTP_HOST}/all/'; } } } if(isset($_POST["wpFastestCacheMobile"]) && $_POST["wpFastestCacheMobile"] == "on"){ $mobile = "RewriteCond %{HTTP_USER_AGENT} !^.*".$this->getMobileUserAgents().".*$ [NC]"."\n"; if(isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'])){ $mobile = $mobile."RewriteCond %{HTTP_CLOUDFRONT_IS_MOBILE_VIEWER} false [NC]"."\n"; $mobile = $mobile."RewriteCond %{HTTP_CLOUDFRONT_IS_TABLET_VIEWER} false [NC]"."\n"; } } if(isset($_POST["wpFastestCacheLoggedInUser"]) && $_POST["wpFastestCacheLoggedInUser"] == "on"){ $loggedInUser = "RewriteCond %{HTTP:Cookie} !wordpress_logged_in"."\n"; } if(!preg_match("/^https/i", get_option("home"))){ $ifIsNotSecure = "RewriteCond %{HTTPS} !=on"; } if($this->is_trailing_slash()){ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} \/$"."\n"; }else{ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} ![^\/]+\/$"."\n"; } $data = "# BEGIN WpFastestCache"."\n". "# Modified Time: ".date("d-m-y G:i:s", current_time('timestamp'))."\n". ""."\n". "RewriteEngine On"."\n". "RewriteBase /"."\n". $this->ruleForWpContent()."\n". $this->prefixRedirect(). $this->excludeRules()."\n". $this->excludeAdminCookie()."\n". $this->http_condition_rule()."\n". "RewriteCond %{HTTP_USER_AGENT} !(".$this->get_excluded_useragent().")"."\n". "RewriteCond %{HTTP_USER_AGENT} !(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)"."\n". "RewriteCond %{REQUEST_METHOD} !POST"."\n". $ifIsNotSecure."\n". "RewriteCond %{REQUEST_URI} !(\/){2,}"."\n". "RewriteCond %{THE_REQUEST} !(\/){2,}"."\n". $trailing_slash_rule. "RewriteCond %{QUERY_STRING} !.+"."\n".$loggedInUser. $consent_cookie. "RewriteCond %{HTTP:Cookie} !comment_author_"."\n". //"RewriteCond %{HTTP:Cookie} !woocommerce_items_in_cart"."\n". 'RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]'."\n".$mobile; if(ABSPATH == "//"){ $data = $data."RewriteCond %{DOCUMENT_ROOT}/".WPFC_WP_CONTENT_BASENAME.$cache_path."$1/index.html -f"."\n"; }else{ //WARNING: If you change the following lines, you need to update webp as well $data = $data."RewriteCond %{DOCUMENT_ROOT}/".WPFC_WP_CONTENT_BASENAME.$cache_path."$1/index.html -f [or]"."\n"; // to escape spaces $tmp_WPFC_WP_CONTENT_DIR = str_replace(" ", "\ ", WPFC_WP_CONTENT_DIR); $data = $data."RewriteCond ".$tmp_WPFC_WP_CONTENT_DIR.$cache_path.$this->getRewriteBase(true)."$1/index.html -f"."\n"; } $data = $data.'RewriteRule ^(.*) "/'.$this->getRewriteBase().WPFC_WP_CONTENT_BASENAME.$cache_path.$this->getRewriteBase(true).'$1/index.html" [L]'."\n"; //RewriteRule !/ "/wp-content/cache/all/index.html" [L] if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme){ $wpfc_mobile = new WpFcMobileCache(); if($this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php')){ $wpfc_mobile->set_wptouch(true); }else{ $wpfc_mobile->set_wptouch(false); } $data = $data."\n\n\n".$wpfc_mobile->update_htaccess($data); } $data = $data.""."\n". ""."\n". "AddDefaultCharset UTF-8"."\n". ""."\n". "FileETag None"."\n". "Header unset ETag"."\n". "Header set Cache-Control \"max-age=0, no-cache, no-store, must-revalidate\""."\n". "Header set Pragma \"no-cache\""."\n". "Header set Expires \"Mon, 29 Oct 1923 20:30:00 GMT\""."\n". ""."\n". ""."\n". "# END WpFastestCache"."\n"; if(is_multisite()){ return ""; }else{ return preg_replace("/\n+/","\n", $data); } } public function http_condition_rule(){ $http_host = preg_replace("/(http(s?)\:)?\/\/(www\d*\.)?/i", "", trim(home_url(), "/")); if(preg_match("/\//", $http_host)){ $http_host = strstr($http_host, '/', true); } if(preg_match("/www\./", home_url())){ $http_host = "www.".$http_host; } return "RewriteCond %{HTTP_HOST} ^".$http_host; } public function ruleForWpContent(){ return ""; $newContentPath = str_replace(home_url(), "", content_url()); if(!preg_match("/wp-content/", $newContentPath)){ $newContentPath = trim($newContentPath, "/"); return "RewriteRule ^".$newContentPath."/cache/(.*) ".WPFC_WP_CONTENT_DIR."/cache/$1 [L]"."\n"; } return ""; } public function getRewriteBase($sub = ""){ if($sub && $this->is_subdirectory_install()){ $trimedProtocol = preg_replace("/http:\/\/|https:\/\//", "", trim(home_url(), "/")); $path = strstr($trimedProtocol, '/'); if($path){ return trim($path, "/")."/"; }else{ return ""; } } $url = rtrim(site_url(), "/"); preg_match("/https?:\/\/[^\/]+(.*)/", $url, $out); if(isset($out[1]) && $out[1]){ $out[1] = trim($out[1], "/"); if(preg_match("/\/".preg_quote($out[1], "/")."\//", WPFC_WP_CONTENT_DIR)){ return $out[1]."/"; }else{ return ""; } }else{ return ""; } } public function checkSuperCache($path, $htaccess){ if($this->isPluginActive('wp-super-cache/wp-cache.php')){ return array("WP Super Cache needs to be deactive", "error"); }else{ if(file_exists($path."wp-content/wp-cache-config.php")){ @unlink($path."wp-content/wp-cache-config.php"); } $message = ""; if(is_file($path."wp-content/wp-cache-config.php")){ $message .= "
- be sure that you removed /wp-content/wp-cache-config.php"; } if(preg_match("/supercache/", $htaccess)){ $message .= "
- be sure that you removed the rules of super cache from the .htaccess"; } return $message ? array("WP Super Cache cannot remove its own remnants so please follow the steps below".$message, "error") : ""; } return ""; } public function check_htaccess(){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } if(!is_writable($path.".htaccess") && count($_POST) > 0){ include_once(WPFC_MAIN_PATH."templates/htaccess.html"); $htaccess = @file_get_contents($path.".htaccess"); if(isset($this->options->wpFastestCacheLBC)){ $htaccess = $this->insertLBCRule($htaccess, array("wpFastestCacheLBC" => "on")); } if(isset($this->options->wpFastestCacheGzip)){ $htaccess = $this->insertGzipRule($htaccess, array("wpFastestCacheGzip" => "on")); } if(isset($this->options->wpFastestCacheStatus)){ $htaccess = $this->insertRewriteRule($htaccess, array("wpFastestCacheStatus" => "on")); } $htaccess = preg_replace("/\n+/","\n", $htaccess); echo ""; echo ""; ?> options->wpFastestCacheCombineCss) ? 'checked="checked"' : ""; $wpFastestCacheGoogleFonts = isset($this->options->wpFastestCacheGoogleFonts) ? 'checked="checked"' : ""; $wpFastestCacheGzip = isset($this->options->wpFastestCacheGzip) ? 'checked="checked"' : ""; $wpFastestCacheCombineJs = isset($this->options->wpFastestCacheCombineJs) ? 'checked="checked"' : ""; $wpFastestCacheCombineJsPowerFul = isset($this->options->wpFastestCacheCombineJsPowerFul) ? 'checked="checked"' : ""; $wpFastestCacheDisableEmojis = isset($this->options->wpFastestCacheDisableEmojis) ? 'checked="checked"' : ""; $wpFastestCacheRenderBlocking = isset($this->options->wpFastestCacheRenderBlocking) ? 'checked="checked"' : ""; $wpFastestCacheRenderBlockingCss = isset($this->options->wpFastestCacheRenderBlockingCss) ? 'checked="checked"' : ""; $wpFastestCacheDelayJS = isset($this->options->wpFastestCacheDelayJS) ? 'checked="checked"' : ""; $wpFastestCacheLanguage = isset($this->options->wpFastestCacheLanguage) ? $this->options->wpFastestCacheLanguage : "eng"; $wpFastestCacheLazyLoad = isset($this->options->wpFastestCacheLazyLoad) ? 'checked="checked"' : ""; $wpFastestCacheLazyLoad_keywords = isset($this->options->wpFastestCacheLazyLoad_keywords) ? $this->options->wpFastestCacheLazyLoad_keywords : ""; $wpFastestCacheLazyLoad_placeholder = isset($this->options->wpFastestCacheLazyLoad_placeholder) ? $this->options->wpFastestCacheLazyLoad_placeholder : "default"; $wpFastestCacheLazyLoad_exclude_full_size_img = isset($this->options->wpFastestCacheLazyLoad_exclude_full_size_img) ? 'checked="checked"' : ""; $wpFastestCacheLBC = isset($this->options->wpFastestCacheLBC) ? 'checked="checked"' : ""; $wpFastestCacheLoggedInUser = isset($this->options->wpFastestCacheLoggedInUser) ? 'checked="checked"' : ""; $wpFastestCacheMinifyCss = isset($this->options->wpFastestCacheMinifyCss) ? 'checked="checked"' : ""; $wpFastestCacheMinifyCssPowerFul = isset($this->options->wpFastestCacheMinifyCssPowerFul) ? 'checked="checked"' : ""; $wpFastestCacheMinifyHtml = isset($this->options->wpFastestCacheMinifyHtml) ? 'checked="checked"' : ""; $wpFastestCacheMinifyHtmlPowerFul = isset($this->options->wpFastestCacheMinifyHtmlPowerFul) ? 'checked="checked"' : ""; $wpFastestCacheMinifyJs = isset($this->options->wpFastestCacheMinifyJs) ? 'checked="checked"' : ""; $wpFastestCacheMobile = isset($this->options->wpFastestCacheMobile) ? 'checked="checked"' : ""; $wpFastestCacheMobileTheme = isset($this->options->wpFastestCacheMobileTheme) ? 'checked="checked"' : ""; $wpFastestCacheMobileTheme_themename = isset($this->options->wpFastestCacheMobileTheme_themename) ? $this->options->wpFastestCacheMobileTheme_themename : ""; $wpFastestCacheNewPost = isset($this->options->wpFastestCacheNewPost) ? 'checked="checked"' : ""; $wpFastestCacheRemoveComments = isset($this->options->wpFastestCacheRemoveComments) ? 'checked="checked"' : ""; $wpFastestCachePreload = isset($this->options->wpFastestCachePreload) ? 'checked="checked"' : ""; $wpFastestCachePreload_homepage = isset($this->options->wpFastestCachePreload_homepage) ? 'checked="checked"' : ""; $wpFastestCachePreload_post = isset($this->options->wpFastestCachePreload_post) ? 'checked="checked"' : ""; $wpFastestCachePreload_category = isset($this->options->wpFastestCachePreload_category) ? 'checked="checked"' : ""; $wpFastestCachePreload_customposttypes = isset($this->options->wpFastestCachePreload_customposttypes) ? 'checked="checked"' : ""; $wpFastestCachePreload_customTaxonomies = isset($this->options->wpFastestCachePreload_customTaxonomies) ? 'checked="checked"' : ""; $wpFastestCachePreload_page = isset($this->options->wpFastestCachePreload_page) ? 'checked="checked"' : ""; $wpFastestCachePreload_tag = isset($this->options->wpFastestCachePreload_tag) ? 'checked="checked"' : ""; $wpFastestCachePreload_attachment = isset($this->options->wpFastestCachePreload_attachment) ? 'checked="checked"' : ""; $wpFastestCachePreload_number = isset($this->options->wpFastestCachePreload_number) ? esc_attr($this->options->wpFastestCachePreload_number) : 4; $wpFastestCachePreload_restart = isset($this->options->wpFastestCachePreload_restart) ? 'checked="checked"' : ""; $wpFastestCachePreload_order = isset($this->options->wpFastestCachePreload_order) ? esc_attr($this->options->wpFastestCachePreload_order) : ""; $wpFastestCachePreload_sitemap = isset($this->options->wpFastestCachePreload_sitemap) ? esc_attr($this->options->wpFastestCachePreload_sitemap) : ""; $wpFastestCacheStatus = isset($this->options->wpFastestCacheStatus) ? 'checked="checked"' : ""; $wpFastestCacheTimeOut = isset($this->cronJobSettings["period"]) ? $this->cronJobSettings["period"] : ""; $wpFastestCacheUpdatePost = isset($this->options->wpFastestCacheUpdatePost) ? 'checked="checked"' : ""; $wpFastestCacheWidgetCache = isset($this->options->wpFastestCacheWidgetCache) ? 'checked="checked"' : ""; ?>

"wpfc-options","title" => __("Settings", "wp-fastest-cache" ))); array_push($tabs, array("id"=>"wpfc-deleteCache","title" => __("Delete Cache", "wp-fastest-cache" ))); array_push($tabs, array("id"=>"wpfc-imageOptimisation","title" => __("Image Optimization", "wp-fastest-cache" ))); if(!class_exists("WpFastestCachePowerfulHtml")){ array_push($tabs, array("id"=>"wpfc-premium","title"=>"Premium")); } array_push($tabs, array("id"=>"wpfc-exclude","title"=>__("Exclude", "wp-fastest-cache" ))); array_push($tabs, array("id"=>"wpfc-cdn","title"=>"CDN")); array_push($tabs, array("id"=>"wpfc-db","title"=>"DB")); foreach ($tabs as $key => $value){ $checked = ""; //tab of "delete css and js" has been removed so there is need to check it if(isset($_POST["wpFastestCachePage"]) && $_POST["wpFastestCachePage"] && $_POST["wpFastestCachePage"] == "deleteCssAndJsCache"){ $_POST["wpFastestCachePage"] = "deleteCache"; } if(!isset($_POST["wpFastestCachePage"]) && $value["id"] == "wpfc-options"){ $checked = ' checked="checked" '; }else if((isset($_POST["wpFastestCachePage"])) && ("wpfc-".$_POST["wpFastestCachePage"] == $value["id"])){ $checked = ' checked="checked" '; } echo ''."\n"; echo ''."\n"; } ?>
id="wpFastestCacheStatus" name="wpFastestCacheStatus">
id="wpFastestCacheWidgetCache" name="wpFastestCacheWidgetCache">
id="wpFastestCacheWidgetCache">
id="wpFastestCacheWidgetCache">
id="wpFastestCacheWidgetCache">
id="wpFastestCachePreload" name="wpFastestCachePreload">
" >" />
" >
id="wpFastestCacheLoggedInUser" name="wpFastestCacheLoggedInUser">
id="wpFastestCacheMobile" name="wpFastestCacheMobile">
id="wpFastestCacheMobileTheme" name="wpFastestCacheMobileTheme">
id="wpFastestCacheNewPost" name="wpFastestCacheNewPost">
id="wpFastestCacheUpdatePost" name="wpFastestCacheUpdatePost">
id="wpFastestCacheMinifyHtml" name="wpFastestCacheMinifyHtml">
id="wpFastestCacheMinifyHtmlPowerFul" name="wpFastestCacheMinifyHtmlPowerFul">
id="wpFastestCacheMinifyCss" name="wpFastestCacheMinifyCss">
id="wpFastestCacheMinifyCssPowerFul" name="wpFastestCacheMinifyCssPowerFul">
id="wpFastestCacheCombineCss" name="wpFastestCacheCombineCss">
id="wpFastestCacheMinifyJs" name="wpFastestCacheMinifyJs">
id="wpFastestCacheCombineJs" name="wpFastestCacheCombineJs"> (header)
id="wpFastestCacheCombineJsPowerFul" name="wpFastestCacheCombineJsPowerFul"> (footer)
(footer)
(footer)
id="wpFastestCacheGzip" name="wpFastestCacheGzip">
id="wpFastestCacheLBC" name="wpFastestCacheLBC">
id="wpFastestCacheDisableEmojis" name="wpFastestCacheDisableEmojis">
id="wpFastestCacheRenderBlocking" name="wpFastestCacheRenderBlocking">
id="wpFastestCacheGoogleFonts" name="wpFastestCacheGoogleFonts">
Lazy Load
id="wpFastestCacheLazyLoad_exclude_full_size_img" name="wpFastestCacheLazyLoad_exclude_full_size_img"> id="wpFastestCacheLazyLoad" name="wpFastestCacheLazyLoad">
" >" />
" >
Lazy Load
id="wpFastestCacheDelayJS" name="wpFastestCacheDelayJS">
Language
statics(); }else{ ?>
Show Logs

12.3Kb / 1 Items

12.4Kb / 1 Items

278.2Kb / 9 Items

338.4Kb / 16 Items

" class="button-primary">

getWpContentDir("/cache/all"); ?>
" class="button-primary">


getWpContentDir("/cache/all"); ?>
getWpContentDir("/cache/wpfc-minified"); ?>
printLogs(); } ?>

Reverse Proxy Cache

">
Varnish Cache

Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy.

statics(); ?> imageList(); ?>
  • Bronze
    $ 49 .99 /lifetime
    1 License Number of Licenses
    1,000 Image Credits per License
    Support and Updates
    " width="40" height="40" /> One-Time Fee
    " width="40" height="40" /> 1 year license transfer right
    " width="40" height="40" /> 30 Day Money Back Guarantee
  • Silver
    $ 125 .00 /lifetime
    3 Licenses Number of Licenses
    1,000 Image Credits per License
    Support and Updates
    " width="40" height="40" /> One-Time Fee
    " width="40" height="40" /> 1 year license transfer right
    " width="40" height="40" /> 30 Day Money Back Guarantee
  • Gold
    $ 175 .00 /lifetime
    5 Licenses Number of Licenses
    1,000 Image Credits per License
    Support and Updates
    " width="40" height="40" /> One-Time Fee
    " width="40" height="40" /> 1 year license transfer right
    " width="40" height="40" /> 30 Day Money Back Guarantee
  • Platinum
    $ 300 .00 /lifetime
    10 Licenses Number of Licenses
    1,000 Image Credits per License
    Support and Updates
    " width="40" height="40" /> One-Time Fee
    " width="40" height="40" /> 1 year license transfer right
    " width="40" height="40" /> 30 Day Money Back Guarantee

" />
CDN by Bunny

Speed up content with next-generation CDN

" />
Other CDN Providers

You can use any cdn provider.

" />
CDN by Cloudflare

CDN, DNS, DDoS protection and security

isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ ?>
ALL (0)

Run the all options

Post Revisions (0)

Clean the all post revisions

Trashed Contents (0)

Clean the all trashed posts & pages

Trashed & Spam Comments (0)

Clean the all comments from trash & spam

Trackbacks and Pingbacks (0)

Clean the all trackbacks and pingbacks

Transient Options (0)

Clean the all transient options

options->wpFastestCacheStatus)){ if(isset($_SERVER["HTTP_CDN_LOOP"]) && $_SERVER["HTTP_CDN_LOOP"] && $_SERVER["HTTP_CDN_LOOP"] == "cloudflare"){ $cloudflare_integration_exist = false; $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ $std_obj = json_decode($cdn_values); foreach($std_obj as $key => $value){ if($value->id == "cloudflare"){ $cloudflare_integration_exist = true; break; } } } if(!$cloudflare_integration_exist){ include_once(WPFC_MAIN_PATH."templates/cloudflare_warning.html"); } } } ?>
" data-pin-no-hover="true" style="margin-top: 3px; margin-bottom: 11px;"/>
Our support is here 24/7 for you.
Send Us an Email Create Topic
" data-pin-no-hover="true" style="margin-top: 3px; margin-bottom: 11px;"/>
Please support us by giving a review.
Add Your Review
" data-pin-no-hover="true" />
Make today the day you say goodbye to slowness.
" alt="Make today the day you say goodbye to slowness." data-pin-no-hover="true"> Sign Up Now!
check_htaccess(); } } } } ?>