Правилата на WordPress също имат изключения

wordpress apache
Време за четене: 2 протокол

wordpress apacheWordPress направи голяма еволюционна стъпка напред в платформата за блогове, като я приближи до пълноценна система за управление на съдържанието с проследяване на ревизиите, повече поддръжка за персонализирани менюта и - най-интригуващата функция за мен - поддръжка на множество сайтове с картографиране на домейни.

Ако не сте наркоман на система за управление на съдържанието, всичко е наред. Можете да пропуснете точно тази статия. Но за моите колеги техно-гийкове, глави на кодове и apache-dabblers, искам да споделя нещо интересно и нещо страхотно.

Multi-site е функция, която ви позволява да стартирате произволен брой уеб сайтове на WordPress с една инсталация на WordPress. Ако администрирате множество сайтове, хубаво е, защото можете да инсталирате одобрена група теми и приспособления и да ги активирате за вашите клиентски сайтове. Има няколко технически препятствия за картографиране на вашите домейни, но процесът не е труден.

Една от проблемните области, които идентифицирах, е в персонализирането на темата. Тъй като темите могат да бъдат предоставени на множество уебсайтове, всички персонализации, които правите за дадена тема, ще засегнат и всички други сайтове, използващи тази тема при инсталирането на няколко сайта. Моят начин да заобиколя това е да дублирам тема, преди да започна да персонализирам, и ясно да назовем темата за клиентския сайт, за който я оформям.

Друг интересен въпрос е какво се случва във файла .htaccess на вашия сървър Apache. WordPress трябва да пренапише пътищата на блог по блог и прави това с правило за пренаписване и php файл.

WordPress използва следното правило за пренаписване:

RewriteRule ^ ([_ 0-9a-zA-Z -] + /)? Files /(.+) wp-includes / ms-files.php? File = $ 2 [L]

По същество всичко, което е в поддиректория на mysite.com/files/directory, се пренаписва на mysite.com/files/wp-includes/myblogfolderpath ... и тук става интересно. Какво се случва, ако всъщност трябва да имате файл на вашия сървър, който е mysite.com/files/myfolder/myimage.jpg? Получавате грешка 404, това се случва. Правилото за пренаписване на Apache започва и променя пътя.

Разбира се, може би никога няма да срещнете този проблем, но аз го направих. Имах сайт, който трябваше да използва джаджа за javascript от друг уебсайт и трябваше да намери графики на mysite.com/files/Images/myfile. Тъй като нямаше начин да променя файла на хост сайта, трябваше да намеря начин да направя това на моя сървър. Лесното решение е да се създаде условие за пренаписване, което прави изключение за конкретни файлове.

Тук е решение:

RewriteCond% {REQUEST_URI}! /? Files / Image / file1.jpg $
RewriteCond% {REQUEST_URI}! /? Files / Image / file2.jpg $
RewriteRule ^ ([_ 0-9a-zA-Z -] + /)? Files /(.+) wp-includes / ms-files.php? File = $ 2 [L]

Условията за пренаписване трябва да бъдат поставени преди правилото за пренаписване, иначе този трик няма да работи. Трябва да е лесно да модифицирате това състояние за собствени цели, ако срещнете подобен проблем. Решението работи чудесно за мен, като ми позволи да замествам персонализирана графика, а не по-нежелания алтернативен текст, който не отговаряше на моя дизайн. Надяваме се, че ще работи и за вас.

Какво мислите?

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните за коментарите ви.