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


10

Ich versuche, was ich für etwas wirklich Einfaches hielt, um meine URL zu maskieren, aber es scheint nicht zu funktionieren. Ich möchte in der Lage sein, Links zu Bildern in meinem IMG-Tag zu erstellen, ohne die vollständige URL eingeben zu müssen.

dh

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 lokalen Host scheint jedoch nichts zu funktionieren. Ich verwende den Apache-Server auf einem Windows 7-Computer. Ich versuche, mit einem .htaccess das zu tun, was ich oben erwähnt habe. Hier ist meine .htaccess-Datei im Stammverzeichnis meiner Website.

UPDATE: Ich habe unten den ZweiBlumen-Vorschlag 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 Permalinks-Seite und drückte auf Speichern. Das Ergebnis war, dass mein .htaccess-Ordner neu geschrieben wurde und die von ihm erzeugte Ausgabe unten aufgeführt 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.

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

Ich bekomme nur eine Seite, die nicht gefunden wurde. Joshuas Vorschlag hat perfekt funktioniert, aber ich hoffe, dass ich ihn in Verbindung mit der Maskierung der Bild-URL verwenden kann.

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

AKTUALISIEREN:

Für alle, die dies lesen, habe ich es gerade 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, warum ich mich dafür entschieden habe, es in die .htaccess-Datei zu setzen, ist, dass diese Datei jedes Mal überschrieben wird, wenn ich zur Permalinks-Admin-Seite gehe, und ich dies nicht versehentlich überschreiben darf. Ich denke, ich könnte das irgendwie ausschalten, bin mir aber nicht sicher, wie ich das machen soll. Alle drei Antworten halfen bis zu einem gewissen Grad.

Antworten:


10

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 ihrer Datei root-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 .htaccesswie in der Antwort von ZweiBlumen direkt in einer Datei ausführen können, sollten Sie diese Lösung auswählen, da sie höchstwahrscheinlich optimierter ist.


1
Obwohl nicht ganz das, wonach ich gesucht habe, wurden die Regeln beim Speichern über die Admin-Permalinks-Seite in die .htaccess-Datei eingefügt. Ich habe diese Methode in Verbindung mit der von Joshuas verwendet und sie funktioniert perfekt. Danke für die Hilfe.
Dreza

Cool, für die Leistung ist es gut, dass sie die Umschreibungen auch in den .htaccess setzen.
Geert

Ich würde denken, dass diese Methode vollkommen in Ordnung ist, verglichen mit der harten Codierung in Ihrem .htaccess. Denn hier können Sie es auch basierend auf der functions.php eines Themas verwalten und diese Regeln bei Bedarf deaktivieren.
Jake

Dies ist tatsächlich die beste Methode für Wordpress. Die Regeln von WP Rewrite werden nur beim Aktualisieren der Permalink-Struktur generiert. Sie schreiben sie also im Wesentlichen trotzdem in Ihren .htaccess. wenn auch auf überschaubare Weise, wie Jake sagt.
Pospi

1
Sollte wahrscheinlich nicht wp-content/themesfest codiert sein, da sie Ziele bewegen. global $wp_theme_directorieskann verwendet werden, um alle registrierten Themenverzeichnisse zu durchlaufen und das aktuell aktive Thema zu identifizieren. Und WP_CONTENT_DIRkönnte verwendet werden, um den define()ed-Namen des Inhaltsverzeichnisses zu erhalten. Wie auch immer, +1 auf diese Antwort.
Kaiser

6

Wenn das Problem nur bei Bildern liegt, aber nicht bei CSS oder Javascript, enthält Ihre RewriteRule meines Erachtens einen Tippfehler. Ich denke, Sie vermissen eine "1" nach dem "$":

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

Möglicherweise möchten Sie auch versuchen, diese zusätzlichen Anweisungen unter die ursprüngliche Regel zu setzen, dh unter diese Zeile:

RewriteRule ^index\.php$ - [L]

Ich bin mir aber nicht sicher.


Schalen. habe das nicht gesehen. Danke, ich werde es versuchen.
Dreza

4

Warum erstellen Sie dafür keinen Shortcode auf folgende Weise?

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

Verwenden Sie dann den folgenden Shortcode an einer beliebigen Stelle im Inhaltsbereich.

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

hmmm, ich mag die Möglichkeit, den [img_folder] im Inhaltsbereich zu verwenden, obwohl ich eigentlich nur die / images-URL haben wollte, nicht den gesamten wp-Inhalt. Ich könnte jedoch versuchen, dies mit der Antwort von Geert und ZweiBlumens zu kombinieren, wenn ich diese in Gang bringe.
Dreza
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.