Content Marketing

WordPress .htaccess noteikumiem ir arī izņēmumi

WordPress emuāru platformā ir spēris ievērojamu evolucionāru soli uz priekšu, tuvinot to pilnvērtīgai satura pārvaldības sistēmai ar pārskatīšanas izsekošanu, lielāku atbalstu pielāgotajām izvēlnēm un - man visinteresantāko funkciju - vairāku vietņu atbalstu ar domēnu kartēšanu.

Ja neesat satura pārvaldības sistēmu junkie, tas ir labi. Varat izlaist tieši aiz šī raksta. Bet saviem kolēģiem tehno-geeks, kodētājiem un apache-dabbleriem es vēlos dalīties ar kaut ko interesantu un kaut ko foršu.

Vairākas vietnes ir funkcija, kas ļauj palaist neierobežotu skaitu WordPress vietņu ar vienu WordPress instalāciju. Ja administrējat vairākas vietnes, tas ir jauki, jo varat instalēt apstiprinātu motīvu un logrīku grupu un aktivizēt tos savām klientu vietnēm. Domēnu kartēšanai ir daži tehniski šķēršļi, taču process nav grūts.

Viena no problemātiskajām jomām, ko es identificēju, ir tēmas pielāgošana. Tā kā motīvus var padarīt pieejamus vairākām vietnēm, visi motīvam veiktie pielāgojumi ietekmēs arī visas citas vietnes, kas izmanto šo motīvu vairāku vietņu instalācijā. Mans veids, kā to apiet, ir dublēt motīvu, pirms sāku pielāgošanu, un skaidri nosaukt motīvu klienta vietnei, kurai to veidoju.

Vēl viens interesants jautājums ir tas, kas notiek Htaccess failu savā Apache serverī. Programmai WordPress ir jāpārraksta ceļi katrā emuārā, un tas tiek darīts, izmantojot pārrakstīšanas kārtulu un php fails.

WordPress izmanto šādu pārrakstīšanas kārtulu:

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

Sadalīts tas nozīmē:

  1. RewriteRule – Šī direktīva norāda Apache, ka tas ir pārrakstīšanas noteikums.
  2. ^([_0-9a-zA-Z-]+/)? - Šī ir regulāra izteiksme (RegEx), kas atbilst rakstzīmju virknei, kas sākas ar neobligātu burtu un ciparu rakstzīmju un defisu virkni, kam seko slīpsvītra. Iekavas norāda uztveršanas grupu, kas nozīmē, ka atbilstošo tekstu var izmantot aizstāšanas virknē.
  3. files/ – Tas atbilst virknei “faili/”.
  4. (.+) – Šī ir vēl viena uztveršanas grupa, kas vienu vai vairākas reizes atbilst jebkurai rakstzīmju virknei.
  5. wp-includes/ms-files.php?file=$2 – Šī ir aizstājējvirkne, kas aizstāj atbilstošo virkni. Tas liek Apache novirzīt pieprasījumu uz “wp-includes/ms-files.php” ar otrās uztveršanas grupas vērtību ($2) kā vaicājuma parametru, ko sauc par “failu”.
  6. [L] - Šis ir karogs, kas liek Apache pārtraukt jebkādu turpmāku noteikumu apstrādi, ja šis noteikums atbilst.

Būtībā viss, kas atrodas mysite.com/files/directory apakšdirektorijā, tiek pārrakstīts uz mysite.com/files/wp-includes/myblogfolderpath ..., un tieši šeit tas kļūst interesants. Kas notiek, ja jūsu serverī patiešām ir jābūt failam, kas ir mysite.com/files/myfolder/myimage.jpg? Jūs saņemat kļūdu 404, tas notiek. Apache pārrakstīšanas kārtula sāk darboties un maina ceļu.

Protams, jūs nekad nevarat saskarties ar šo problēmu, bet es to izdarīju. Man bija vietne, kurai bija jāizmanto javascript logrīks no citas vietnes, un tai bija jāatrod grafika vietnē mysite.com/files/Images/myfile. Tā kā resursdatora vietnē nebija iespējas mainīt failu, man vajadzēja izdomāt veidu, kā to izdarīt manā serverī. Vienkāršs risinājums ir izveidot pārrakstīšanas nosacījumu, kas paredz izņēmumu konkrētiem failiem.

Šeit ir risinājums:

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]

Salūzis:

1. rindiņa:

  1. RewriteCond – Šī direktīva norāda Apache, ka šī ir RewriteCond noteikums.
  2. %{REQUEST_URI} – Šis ir servera mainīgais, kas satur pieprasītā URI ceļu.
  3. ! – Šis ir nolieguma operators, kas nozīmē “nē”. To izmanto, lai apgrieztu nosacījumu.
  4. /?files/Image/file1.jpg$ – Šī ir regulāra izteiksme, kas precīzi atbilst virknei “/files/Image/file1.jpg” pieprasītā URI beigās. Jautājuma zīme un slīpsvītra pirms “failiem” padara sākuma slīpsvītru neobligātu.

2. rindiņa:

  1. RewriteCond – Šī direktīva norāda Apache, ka šī ir RewriteCond noteikums.
  2. %{REQUEST_URI} – Šis ir servera mainīgais, kas satur pieprasītā URI ceļu.
  3. ! – Šis ir nolieguma operators, kas nozīmē “nē”. To izmanto, lai apgrieztu nosacījumu.
  4. /?files/Image/file2.jpg$ – Šī ir regulāra izteiksme, kas precīzi atbilst virknei “/files/Image/file2.jpg” pieprasītā URI beigās. Jautājuma zīme un slīpsvītra pirms “failiem” padara sākuma slīpsvītru neobligātu.

3. rindiņa:

  1. RewriteRule – Šī direktīva norāda Apache, ka tas ir pārrakstīšanas noteikums.
  2. ^([_0-9a-zA-Z-]+/)? – Šī ir regulāra izteiksme, kas atbilst rakstzīmju virknei, kas sākas ar izvēles burtu un ciparu rakstzīmju un defisu virkni, kam seko slīpsvītra. Iekavas norāda uztveršanas grupu, kas nozīmē, ka atbilstošo tekstu var izmantot aizstāšanas virknē.
  3. files/ – Tas atbilst virknei “faili/”.
  4. (.+) – Šī ir vēl viena uztveršanas grupa, kas vienu vai vairākas reizes atbilst jebkurai rakstzīmju virknei.
  5. wp-includes/ms-files.php?file=$2 – Šī ir aizstājējvirkne, kas aizstāj atbilstošo virkni. Tas liek Apache novirzīt pieprasījumu uz “wp-includes/ms-files.php” ar otrās uztveršanas grupas vērtību ($2) kā vaicājuma parametru, ko sauc par “failu”.
  6. [L] - Šis ir karogs, kas liek Apache pārtraukt jebkādu turpmāku noteikumu apstrādi, ja šis noteikums atbilst.

Pārrakstīšanas nosacījumi ir jānovieto pirms pārrakstīšanas kārtulas, pretējā gadījumā šis triks nedarbosies. Būtu viegli modificēt šo nosacījumu savām vajadzībām, ja rodas kāda līdzīga problēma. Risinājums man izdevās lieliski, ļaujot man aizstāt pielāgotu grafiku, nevis mazāk vēlamo alternatīvo tekstu, kas neatbilst manam dizainam. Cerams, ka tas darbosies arī jums.

Tims Piazza

Tims Piazza ir sociālās dzīves mārketinga partneris un ProSocialTools.com dibinātājs — mazo uzņēmumu resurss vietējo klientu sasniegšanai, izmantojot sociālos medijus un mobilo mārketingu. Kad viņš nerada novatoriskus risinājumus, kas paātrina biznesa procesus, Timam patīk spēlēt mandolīnu un izgatavot mēbeles.

Saistītie raksti

Atpakaļ uz augšu pogu
aizvērt

Reklāmu bloķēšana konstatēta

Martech Zone var nodrošināt jums šo saturu bez maksas, jo mēs gūstam peļņu no savas vietnes, izmantojot ieņēmumus no reklāmām, saistīto uzņēmumu saites un sponsorēšanu. Būsim pateicīgi, ja, apskatot mūsu vietni, noņemtu savu reklāmu bloķētāju.