web-dev-qa-db-fra.com

Comment cacher que j'utilise Wordpress (avec W3 Total Cache)

Pour des raisons de sécurité, je ne veux pas que ce soit évident que j'utilise Word Press. J'utilise le plugin W3 Total Cache et minimise HTML, CSS et JS. Je peux aussi utiliser un CDN.

Est-il possible de modifier le plugin W3 Total Cache afin qu'il puisse réécrire les répertoires Wordpress "wp-content", "wp-admin" et "wp-includes" sans renommer ces répertoires? J'aimerais idéalement pouvoir réécrire les répertoires W3 Total Cache tels que "w3tc"

1
baritoneuk

Cela a été couvert en détail dans Étapes à suivre pour masquer le fait qu'un site utilise WordPress .

La réponse à cette question portait sur le changement de nom du répertoire wp-content et du répertoire du plugin. Si vous préférez réécrire ces répertoires, vous pouvez utiliser les fonctions présentes dans le thème WordPress Roots pour réécrire les répertoires relatifs au répertoire racine de votre site.

<?php
if (stristr($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) {
    function roots_htaccess_writable() {
        if (!is_writable(get_home_path() . '.htaccess')) {
            add_action('admin_notices', create_function('', "echo '<div class=\"error\"><p>" . sprintf(__('Please make sure your <a href="%s">.htaccess</a> file is writeable ', 'roots'), admin_url('options-permalink.php')) . "</p></div>';"));
        };
    }

    add_action('admin_init', 'roots_htaccess_writable');

    // Rewrites DO NOT happen for child themes
    // rewrite /wp-content/themes/roots/css/ to /css/
    // rewrite /wp-content/themes/roots/js/  to /js/
    // rewrite /wp-content/themes/roots/img/ to /js/
    // rewrite /wp-content/plugins/ to /plugins/

    function roots_flush_rewrites() {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }

    function roots_add_rewrites($content) {
        $theme_name = next(explode('/themes/', get_stylesheet_directory()));
        global $wp_rewrite;
        $roots_new_non_wp_rules = array(
            'css/(.*)'      => 'wp-content/themes/'. $theme_name . '/css/$1',
            'js/(.*)'       => 'wp-content/themes/'. $theme_name . '/js/$1',
            'img/(.*)'      => 'wp-content/themes/'. $theme_name . '/img/$1',
            'plugins/(.*)'  => 'wp-content/plugins/$1'
        );
        $wp_rewrite->non_wp_rules += $roots_new_non_wp_rules;
    }

    add_action('admin_init', 'roots_flush_rewrites');

    function roots_clean_assets($content) {
        $theme_name = next(explode('/themes/', $content));
        $current_path = '/wp-content/themes/' . $theme_name;
        $new_path = '';
        $content = str_replace($current_path, $new_path, $content);
        return $content;
    }

    function roots_clean_plugins($content) {
        $current_path = '/wp-content/plugins';
        $new_path = '/plugins';
        $content = str_replace($current_path, $new_path, $content);
        return $content;
    }

    // only use clean urls if the theme isn't a child or an MU (Network) install
    if (!is_multisite() && !is_child_theme()) {
        add_action('generate_rewrite_rules', 'roots_add_rewrites');
        if (!is_admin()) { 
            add_filter('plugins_url', 'roots_clean_plugins');
            add_filter('bloginfo', 'roots_clean_assets');
            add_filter('stylesheet_directory_uri', 'roots_clean_assets');
            add_filter('template_directory_uri', 'roots_clean_assets');
        }
    }

    function roots_add_h5bp_htaccess($rules) {
        global $wp_filesystem;

        if (!defined('FS_METHOD')) define('FS_METHOD', 'direct');
        if (is_null($wp_filesystem)) WP_Filesystem(array(), ABSPATH);

        if (!defined('WP_CONTENT_DIR'))
        define('WP_CONTENT_DIR', ABSPATH . 'wp-content');   

        $theme_name = next(explode('/themes/', get_template_directory()));
        $filename = WP_CONTENT_DIR . '/themes/' . $theme_name . '/inc/h5bp-htaccess';

        $rules .= $wp_filesystem->get_contents($filename);

        return $rules;
    }

    add_action('mod_rewrite_rules', 'roots_add_h5bp_htaccess');
}

?>

Vous devrez également vous assurer que les en-têtes W3 Total Cache X-Powered-by sont supprimés.

<IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.3"
    </IfModule>

Si vous allez utiliser un CDN W3 Total Cache utilisera la même structure de chemin:

wp-content/w3tc/min/xxxxx/default.include.xxxx.css

Vous devrez donc soit les réécrire en utilisant .htaccess sur le CDN si vous avez accès, soit ne pas utiliser minify.

0
Chris_O

Cacher WordPress est possible mais demande beaucoup d’efforts et pose problème avec les mises à jour. En outre, c’est la mauvaise solution, une meilleure option serait de sécuriser réellement WordPress, et de nombreux guides/plugins peuvent vous aider à le faire.

Pour répondre à votre question, il n’a pas vraiment de sens d’utiliser le cache total w3 pour réécrire des répertoires à des fins de sécurité.

0
Wyck