[mod_​rewrite] Podmiana wadliwego katalogu obrazka

Podczas insta­la­cji wp_​editora po stronie użytkow­ni­ka okaza­ło się, że dwie grafi­ki są źle podlin­ko­wa­ne. O ile sam edytor działa bez zarzu­tu, to problem pojawił się przy użyciu przeglą­dar­ki mediów. Tzw "spinner" i "uploader-icons" wywoły­wa­ne są najwy­raź­niej po relatyw­nej ścież­ce i po insta­la­cji skryp­tu poza katalo­giem wp-admin nastę­pu­je próba odwoła­nia się do nieist­nie­ją­ce­go folde­ru 'wp-admin/wp-inclu­de­s/i­ma­ge­s/'.

Podmiana błędnej ścieżki

Szuka­łem w kodzie czy można to gdzieś zmienić, ale w przypad­ku aktuali­za­cji zmiany przepad­ną. Najle­piej zasto­so­wać mod_​rewrite i plik .htaccess WordPress'a. Błąd dotyczy plików graficz­nych, więc akcję można zawęzić i wykonać tylko dla nich. Gdy warunek zosta­nie spełnio­ny nastą­pi podmia­na ścież­ki dostę­pu na prawi­dło­wą.

#Wersja PHP zmieniona: 2020-03-15 03:38:51
AddHandler php7.3-fastcgi php 

## Fix Bad Image Requests
RewriteCond %{REQUEST_FILENAME} !-f
## Add image file types to check against here
RewriteCond %{REQUEST_URI} .(gif|jpe?g|png|bmp|tiff|xcf|psd|ico|svg)$ [NC]
## Specify the file to serve instead
RewriteRule wp-admin/wp-includes/images/(.*) wp-includes/images/$1 [L]

# BEGIN WordPress
# Dyrektywy zawarte między `BEGIN WordPress` oraz `END WordPress`
# są generowane dynamicznie i powinny być modyfikowane tylko za pomocą
# filtrów WordPressa. Zmiany dokonane bezpośrednio tutaj będą nadpisywane.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

#http://nowy.polskirock.eu/wp-admin/wp-includes/images/uploader-icons.png
</IfModule>

# END WordPress

Plik .htaccess systemu WordPress

Wg tego co napisa­no w liniach 11 – 15, wszyst­ko między BEGIN WordPressEND WordPress zosta­nie nadpi­sa­ne przy aktuali­za­cji. Wstawie­nie czego­kol­wiek po END nie zadzia­ła dzięki instruk­cji z linii 22. Należy się zatem rozgo­ścić na począt­ku. W linii 5 spraw­dza­my czy odwoła­nie nie jest do pliku, a w linii 7 czy plik jest z rodzi­ny graficz­nych. Logicz­nie sprzecz­ne? Nie. Szuka­my odwoła­nia które wywołu­je błąd 404 – brak pliku. Połącze­nie tych dwóch warun­ków daje nam infor­ma­cję, czy mamy do czynie­nia brakiem pliku graficz­ne­go.

Omówienie warunków wykonania mod_​rewrite

Linia 9 to wykona­nie przepi­sa­nia. W naszym przypad­ku mocno sprecy­zo­wa­ny. Chodzi o konkret­ny błędny katalog i dobrą ścież­kę przekie­ro­wa­nia. RewriteRule wp-admin/wp-includes/images/(.*) wp-includes/images/$1 [L] Wszyst­ko co po 'images/​' jest zapisa­ne do zmien­nej (.*) => $1. Podaje­my dobrą ścież­kę i przypi­su­je­my $1. Po 'images/​' nie musi być od razu nazwa pliku, a kolej­ny podka­ta­log i następ­ny… Całość zosta­nie przepi­sa­na w całości. Tyle. Spraw­dzi­łem i działa, a to najważ­niej­sze 🙂

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.