Enmascarar wp-content / themes / name / images al directorio de solo imágenes usando htaccess

10

Estoy intentando lo que pensé que sería algo realmente simple de enmascarar mi URL, pero parece que no puedo hacerlo funcionar. Quiero poder vincular a las imágenes en mi etiqueta img sin tener que escribir la url completa.

es decir,

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" />

Sin embargo, en mis páginas solo quiero hacer

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

Sinembargo,nadapareceestarfuncionandoenmihostlocal.EstoyejecutandoelservidorApacheenunamáquinaconWindows7.Estoytratandodeusarun.htaccessparahacerloquehemencionadoanteriormente.Aquíestámiarchivo.htaccessenlaraízdemisitioweb.

ACTUALIZACIÓN:IntentélasugerenciadeZweiBlumenacontinuación,peroesonopareciófuncionar.LuegoprobélasugerenciadeGeertsyagreguéelmétododereescrituraamimisc.phpdemicarpetadeadministración.Luegofuiamipáginadeenlacespermanentesypresionéguardar.Elresultadodehacerestosignificóquemicarpeta.htaccessfuereescritaylasalidaqueprodujoestádebajo.

#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

Sinembargo,todavíanopuedonavegaramicarpetadeimágenescomo:

enlace .

Todo lo que consigo es una página no encontrada. La sugerencia de Joshua funcionó a la perfección, pero espero usar esto junto con el enmascaramiento de la URL de las imágenes.

¿Hay algo más que pueda estar haciendo mal o debería verificar?

ACTUALIZACIÓN:

Para cualquiera que lea esto, lo intenté de nuevo y ha funcionado usando una combinación de métodos Geerts y Joshuas. Parece que mi navegador Firefox ha estado almacenando en caché la página, lo que me hizo pensar que no lo era.

La razón por la que fui con esto para ponerlo en el archivo .htaccess es que este archivo se sobrescribe cada vez que voy a la página de administración de enlaces permanentes y, por lo tanto, no sobrescribo esto por accidente. Supongo que podría desactivar esto de alguna manera pero no estoy seguro de cómo hacerlo. Las tres respuestas ayudaron hasta cierto punto.

    
pregunta dreza 30.11.2011 - 09:48

3 respuestas

10

Consulte el tema de WordPress de Roots . Parece que hacen exactamente lo que quieres con las URL.

Aquí hay un fragmento de su roots-htaccess.php file:

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;
}

Nota: si puedes sacar esto directamente en un archivo .htaccess , como en la respuesta de ZweiBlumen, debes elegir esa solución ya que probablemente esté más optimizada.

    
respondido por el Geert 30.11.2011 - 10:30
6

Si el problema es solo con imágenes, pero no con css o javascript, creo que hay un error tipográfico en su RewriteRule. Creo que le falta un "1" después de "$":

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

Además, puede intentar poner esas declaraciones adicionales debajo de la regla inicial, es decir, debajo de esta línea:

RewriteRule ^index\.php$ - [L]

Aunque no estoy seguro.

    
respondido por el ZweiBlumen 30.11.2011 - 10:26
4

¿Por qué no creas un shortcode para eso de la siguiente manera?

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

Y luego use el siguiente código abreviado en cualquier lugar del área de contenido.

[img_folder]/img.jpg
<img src="[img_folder]/img.jpg" alt="img" />
    
respondido por el Joshua Abenazer 30.11.2011 - 10:02

Lea otras preguntas en las etiquetas