Mascarando o wp-content / themes / name / images para apenas o diretório de imagens usando o htaccess

10

Estou tentando o que pensei ser algo realmente simples de mascarar meu URL, mas não consigo fazer com que funcione. Quero poder vincular as imagens à minha tag img sem ter que digitar o URL completo.

ou seja,

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

No entanto, nas minhas páginas, quero apenas fazer

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

Noentanto,nadapareceestarfuncionandonomeuhostlocal.EuestouexecutandooservidorApacheemumamáquinawindows7.Euestoutentandousarum.htaccessparafazeroqueeumencioneiacima.Aquiestáomeuarquivo.htaccessnaraizdomeusite.

ATUALIZAÇÃO:EutenteisugestãoZweiBlumenabaixo,masissonãoparecefuncionar.EntãotenteiasugestãodeGeertseadicioneiométododereescritaaomeumisc.phpdaminhapastadeadministração.Emseguida,fuiparaminhapáginadepermalinksecliqueiemsalvar.Oresultadodefazerissosignificaqueminhapasta.htaccessfoireescritaeasaídaproduzidaestáabaixo.

#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

Noentanto,aindanãoconsigonavegarparaminhapastadeimagens,como:

enlace .

Tudo que eu obtenho é uma página não encontrada. A sugestão de Joshua funcionou perfeitamente, mas espero usar isso em conjunto com o mascaramento da URL das imagens.

Há mais alguma coisa que eu possa estar fazendo errado ou deveria verificar?

ATUALIZAÇÃO:

Para quem lê isto, eu apenas tentei de novo e funcionou usando uma combinação de métodos de Geerts e Joshuas. Meu navegador Firefox parece estar fazendo o cache da página, o que me fez pensar que não era.

A razão pela qual eu usei isso para colocá-lo no arquivo .htaccess é que esse arquivo é sobrescrito toda vez que eu vou para a página admin do permalinks e, portanto, não vou sobrescrevê-lo por acidente. Eu acho que eu poderia desligar isso de alguma forma, mas não sei como fazer isso. Todas as três respostas ajudaram em algum grau.

    
por dreza 30.11.2011 / 09:48

3 respostas

10

Confira o Tema WordPress sobre raízes . Eles parecem fazer exatamente o que você quer com as URLs.

Veja um snippet do arquivo 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;
}

Observação: se você conseguir fazer isso diretamente em um arquivo .htaccess , como na resposta do ZweiBlumen, você deve escolher essa solução, pois ela provavelmente está mais otimizada.

    
por Geert 30.11.2011 / 10:30
6

Se o problema for apenas com imagens, mas não com css ou javascript, acho que há um erro de digitação na RewriteRule. Eu acho que você está perdendo um "1" depois do "$":

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

Além disso, você pode tentar colocar essas instruções extras abaixo da regra inicial, ou seja, abaixo desta linha:

RewriteRule ^index\.php$ - [L]

Não tenho certeza.

    
por ZweiBlumen 30.11.2011 / 10:26
4

Por que você não cria um shortcode para isso da seguinte maneira?

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

Em seguida, use o seguinte código de acesso em qualquer lugar na área de conteúdo.

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