Wp-content / themes / name / images dosyasını htaccess kullanarak sadece resimler dizinine maskeleme


10

URL'mi maskelemenin gerçekten basit bir şey olacağını düşündüğüm şeyi deniyorum, ancak işe yaramayacak gibi görünüyor. Tam url'yi yazmak zorunda kalmadan img etiketimdeki resimlere bağlantı vermek istiyorum.

yani

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

Ancak sayfalarımda sadece yapmak istiyorum

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

Ancak localhost üzerinde hiçbir şey çalışmıyor gibi görünüyor. Windows 7 makinesinde Apache sunucusunu çalıştırıyorum. Yukarıda bahsettiğim şeyi yapmak için bir .htaccess kullanmaya çalışıyorum. İşte web sitemin kökündeki .htaccess dosyam.

GÜNCELLEME: Aşağıdaki ZweiBlumen önerisini denedim ancak bu işe yaramadı. Sonra Geerts öneri denedim ve benim yeniden yazma yöntemi benim misc.php benim yönetici klasörü ekledi. Daha sonra kalıcı bağlantılar sayfama gittim ve kaydet'i tıkladım. Bunu yapmanın sonucu, .htaccess klasörümün yeniden yazıldığı ve ürettiği çıktının aşağıda olduğu anlamına geliyordu.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
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} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Ancak, yine de benim resimler klasörüne gidemiyorum:

http: //localhost/images/myimage.jpg .

Tek aldığım sayfa bulunamadı. Joshua'nın önerisi mükemmel çalıştı ancak ben görüntüleri URL maskeleme ile birlikte kullanmayı umuyorum.

Yanlış yaptığım ya da kontrol etmem gereken başka bir şey var mı?

GÜNCELLEME:

Bunu okuyan herkes için, sadece tekrar denedim ve Geerts ve Joshuas yöntemlerinin bir kombinasyonunu kullanarak çalıştı. Firefox tarayıcım, öyle olmadığını düşünmeme neden olan sayfayı önbelleğe alıyor gibi görünüyor.

Bunu .htaccess dosyasına koyarak bununla gitmemizin nedeni, kalıcı yönetici Yöneticisi sayfasına her gittiğimde bu dosyanın üzerine yazılması ve bu nedenle yanlışlıkla üzerine yazmamam. Sanırım bunu bir şekilde kapatabilirim ama nasıl yapılacağından emin değilim. Her üç cevap da bir dereceye kadar yardımcı oldu.

Yanıtlar:


10

Kökler WordPress Temasına göz atın . URL'lerle tam olarak istediğinizi yapıyorlar.

Kökleri-htaccess.php dosyalarından bir pasaj :

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

Not: .htaccessZweiBlumen'ın cevabında olduğu gibi bunu doğrudan bir dosyada çekebilirseniz, büyük olasılıkla daha optimize edilmiş olduğundan bu çözümü seçmelisiniz.


1
Her ne kadar ben bu yöntem için aradığını tam olarak kaydettikten sonra yönetici kalıcı sayfa aracılığıyla .htaccess kuralları koyarak sona erdi. Joshuas ile birlikte bu yöntemi kullanarak sona erdi ve mükemmel çalışıyor. Yardım için teşekkürler.
dreza

Harika, performans için yeniden yazarları .htaccess'e de koymak iyi bir şey.
Geert

Bu yöntemin onları .htaccess'inize zor kodlamaya kıyasla mükemmel olduğunu düşünürdüm. Çünkü burada bir temanın işlevlerine göre de yönetebilirsiniz. Php ve gerekirse bu kuralları kapatabilirsiniz.
Jake

Bu aslında Wordpress için en iyi yöntemdir. WP Rewrite'ın kuralları yalnızca kalıcı bağlantılar yapısını güncellerken oluşturulur, bu nedenle burada yaptığınız şey aslında .htaccess'inize zaten yazmaktır; Jake'in söylediği gibi daha yönetilebilir bir şekilde.
pospi

1
Muhtemelen wp-content/themeshedefleri hareket ettirdikleri için sabit kodlara sahip olmamalıdır . global $wp_theme_directorieskayıtlı tüm tema dizinleri arasında geçiş yapmak ve o anda etkin olan temayı tanımlamak için kullanılabilir. Ve içerik dizinin ed adını WP_CONTENT_DIRalmak için kullanılabilir define(). Her neyse, bu cevapta +1.
Kaiser

6

Sorun sadece resimlerle ilgili, ancak css veya javascript değilse, RewriteRule'unuzda bir yazım hatası olduğunu düşünüyorum. Sanırım "$" dan sonra bir "1" eksik:

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

Ayrıca, bu ek ifadeleri ilk kuralın altına, yani bu satırın altına koymayı deneyebilirsiniz:

RewriteRule ^index\.php$ - [L]

Yine de emin değilim.


shucks. görmedim. Teşekkürler bunu bir deneyeceğim.
dreza

4

Neden bunun için bir kısa kod oluşturmuyorsunuz?

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

Ardından, içerik alanında herhangi bir yerde aşağıdaki kısa kodu kullanın.

[img_folder]/img.jpg
<img src="[img_folder]/img.jpg" alt="img" />

hmmm, içerik alanında [img_folder] kullanma yeteneğini seviyorum, ancak gerçekten sadece wp içeriğinin tümünün değil / images url'si olmasını istemiştim. Ancak bunu Geert ve ZweiBlumens cevaplarıyla birleştirmeye bakabilirsem, eğer devam edersem.
dreza
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.