it-swarm.com.de

Maskieren von wp-content/themes/name/images mit htaccess in ein reines Bilderverzeichnis

Ich versuche etwas, von dem ich dachte, dass es wirklich einfach ist, meine URL zu maskieren, aber es scheint nicht zu funktionieren. Ich möchte in der Lage sein, auf Bilder in meinem img-Tag zu verlinken, ohne die vollständige URL eingeben zu müssen.

d.h.

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

Auf meinen Seiten möchte ich jedoch nur tun

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

An meinem localhost scheint jedoch nichts zu funktionieren. Ich verwende den Apache-Server auf einem Windows 7-Computer. Ich versuche, einen .htaccess zu verwenden, um das zu tun, was ich oben erwähnt habe. Hier ist meine .htaccess-Datei im Stammverzeichnis meiner Website.

UPDATE: Ich habe den ZweiBlumen-Vorschlag unten ausprobiert, aber das schien nicht zu funktionieren. Ich habe dann Geerts Vorschlag ausprobiert und die Methode zum erneuten Schreiben zu meiner misc.php meines Admin-Ordners hinzugefügt. Ich ging dann zu meiner Permalink-Seite und drückte auf Speichern. Das Ergebnis bedeutete, dass mein .htaccess-Ordner neu geschrieben wurde und die von ihm erzeugte Ausgabe unten ist.

# 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

Ich kann jedoch immer noch nicht zu meinem Bilderordner navigieren, z. B .:

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

Ich erhalte nur eine Seite, die nicht gefunden wurde. Der Vorschlag von Joshua hat perfekt funktioniert, aber ich hoffe, dass ich ihn in Verbindung mit dem Maskieren der Bild-URL verwenden kann.

Gibt es noch etwas, was ich falsch machen könnte oder was ich überprüfen sollte?

AKTUALISIEREN:

Für jeden, der dies liest, habe ich es noch einmal versucht und es hat mit einer Kombination von Geerts- und Joshuas-Methoden funktioniert. Mein Firefox-Browser scheint die Seite zwischengespeichert zu haben, was mich zu der Annahme veranlasste, dass dies nicht der Fall war.

Der Grund dafür, dass ich es in die .htaccess-Datei verschoben habe, ist, dass diese Datei jedes Mal überschrieben wird, wenn ich auf die Admin-Seite für Permalinks gehe, und dass ich dies nicht versehentlich überschreiben werde. Ich schätze, ich könnte das irgendwie ausschalten, weiß aber nicht, wie ich das machen soll. Alle drei Antworten halfen bis zu einem gewissen Grad.

10
dreza

Schauen Sie sich das Roots WordPress Theme an. Sie scheinen genau das zu tun, was Sie mit den URLs wollen.

Hier ist ein Ausschnitt aus der Datei 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;
}

Hinweis: Wenn Sie dies direkt in einer .htaccess-Datei abrufen können, wie in der Antwort von ZweiBlumen, sollten Sie diese Lösung auswählen, da sie höchstwahrscheinlich optimierter ist.

10
Geert

Wenn das Problem nur bei Bildern liegt, aber nicht bei CSS oder Javascript, ist in Ihrer RewriteRule ein Tippfehler enthalten. Ich denke, dass Sie eine "1" nach dem "$" vermissen:

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

Sie können auch versuchen, diese zusätzlichen Anweisungen unter die ursprüngliche Regel zu setzen, dh unter diese Zeile:

RewriteRule ^index\.php$ - [L]

Bin mir aber nicht sicher.

6
ZweiBlumen

Warum erstellen Sie dafür nicht wie folgt einen Shortcode?.

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

Verwenden Sie dann den folgenden Shortcode im gesamten Inhaltsbereich.

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