Masquage de wp-content / themes / name / images en un simple répertoire d'images à l'aide de htaccess

10

J'essaie ce que je pensais être quelque chose de très simple, mais qui ne semble pas pouvoir le faire fonctionner. Je souhaite pouvoir créer un lien vers les images de mon tag img sans avoir à taper l'URL complète.

i.e.

Current url:  http://server.com/wp-content/themes/standard/images/img.jpg
or
<img src = "http://server.com/wp-content/themes/standard/images/img.jpg" />

Cependant, sur mes pages, je veux juste faire

<img src="http://server.com/images/img.jpg"/>

Cependant,riennesemblefonctionnersurmonhôtelocal.J'exécuteleserveurApachesurunordinateurWindows7.J'essayed'employerun.htaccesspourfairecequej'aimentionnéci-dessus.Voicimonfichier.htaccessàlaracinedemonsiteweb.

UPDATE:J'aiessayélasuggestiondeZweiBlumenci-dessous,maiscelan'apassembléfonctionner.J'aiensuiteessayélasuggestiondeGeertsetajoutélaméthodederéécritureàmonmisc.phpdemondossieradmin.JesuisensuitealléàmapagedepermaliensetcliquezsurEnregistrer.Lerésultatdecetteopérationsignifiequemondossier.htaccessaétéréécritetquelerésultatgénéréestci-dessous.

#BEGINWordPress<IfModulemod_rewrite.c>RewriteEngineOnRewriteBase/RewriteRule^index\.php$-[L]RewriteRule^css/(.*)/wp-content/themes/standard/css/$1[QSA,L]RewriteRule^js/(.*)/wp-content/themes/standard/js/$1[QSA,L]RewriteRule^images/(.*)/wp-content/themes/standard/images/$1[QSA,L]RewriteCond%{REQUEST_FILENAME}!-fRewriteCond%{REQUEST_FILENAME}!-dRewriteRule./index.php[L]</IfModule>#ENDWordPress

Cependant,jenepeuxtoujourspasaccéderàmondossierd'imagestelque:

enlace .

Tout ce que je reçois, c'est une page introuvable. La suggestion de Joshua a parfaitement fonctionné, mais j'espère l'utiliser conjointement avec le masquage de l'URL des images.

Y a-t-il autre chose que je pourrais mal faire ou que je devrais vérifier?

MISE À JOUR:

Pour tous ceux qui lisent ceci, je viens d’essayer à nouveau et cela a fonctionné en utilisant une combinaison de méthodes de Geerts et de Joshuas. Mon navigateur Firefox semble avoir mis en cache la page, ce qui me faisait penser que ce n’était pas le cas.

La raison pour laquelle j'ai choisi de le placer dans le fichier .htaccess est que ce fichier est écrasé à chaque fois que je me rends sur la page Admin des permaliens et que je ne veux donc pas l'écraser par accident. J'imagine que je pourrais désactiver cela d'une manière ou d'une autre, mais je ne sais pas comment faire. Les trois réponses ont aidé dans une certaine mesure.

    
posée dreza 30.11.2011 - 09:48

3 réponses

10

Découvrez le thème WordPress Roots . Ils semblent faire exactement ce que vous voulez avec les URL.

Voici un extrait de leur fichier roots-htaccess.php :

add_action( 'generate_rewrite_rules', 'roots_add_rewrites' );

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',
  );
  $wp_rewrite->non_wp_rules += $roots_new_non_wp_rules;
}

Remarque: si vous pouvez obtenir cela directement dans un fichier .htaccess , comme dans la réponse de ZweiBlumen, vous devriez choisir cette solution car elle est probablement plus optimisée.

    
réponse donnée Geert 30.11.2011 - 10:30
6

Si le problème concerne uniquement les images, mais pas css ni javascript, je pense qu'il y a une faute de frappe dans votre RewriteRule. Je pense que votre manque un "1" après le "$":

RewriteRule ^images/(.*)$ wp-content/themes/standard/images/$1 [L]

Vous pouvez également essayer de placer ces instructions supplémentaires sous la règle initiale, c'est-à-dire sous cette ligne:

RewriteRule ^index\.php$ - [L]

Pas sûr cependant.

    
réponse donnée ZweiBlumen 30.11.2011 - 10:26
4

Pourquoi ne créez-vous pas un shortcode de la manière suivante?

function img_folder_shortcode( ) {
   return get_stylesheet_directory_uri() . '/images';
}
add_shortcode( 'img_folder', 'img_folder_shortcode' );

Et utilisez ensuite le shortcode suivant n’importe où dans la zone de contenu.

[img_folder]/img.jpg
<img src="[img_folder]/img.jpg" alt="img" />
    
réponse donnée Joshua Abenazer 30.11.2011 - 10:02

Lire d'autres questions sur les étiquettes