Теме: URL rewriting

mod_url: Приказ поддиректоријума у руту домена

Скраћена веза: https://pedja.supurovic.net/veza/5017

Често на интернету наилазим на сајтове који имају своје домене али употребљене на чудан начин: веб апликација, обично неки ЦМС или блог, је инсталирана и видљива у поддиректоријуму а насловна страна врши редирекцију у тај поддиректоријум. У лошијим случајевима редирекције и нема него на насловној стоји линк на поддиректоријум па посетилац мора сам да га кликне.

То је ствар коју треба избегавати, најпре зато што лоше утиче на укупну оптимизацију сајта на претраживачима а није ни у складу са правилима употребљивости сајта.

Најчешћи разлог зашто су сајтови овако инсталирани је тај што су ЦМС апликације и блогови тако спаковани да када их неко распакује директно на сајту, то се стварно смести у поддиректоријум. Никад ми није било јасно зашто аутори тако пакују веб апликације али ваљда имају добар разлог.

За вордпрес сам својевремено направио и наменски скрипт који омогућава да се аутоматски инсталира у основни директоријум сајта.

Но, ако сте већ инсталирали апликацију у поддиректоријум и сајт је већ неко време активан, премештање је незгодан процес, поготово за неког ко томе није вичан. То ипак није крај света. Можете применити редирекцију (url_rewriting) и њом подесити да се сајт види у основном директоријуму иако се апликација не налази на том месту.

Подешавање редирекције

За пример, узмимо да сте инсталирали блог у поддиректоријум blog на свом домену. То значи да се вашем блогу приступа на адреси http://www.vasaadresa.com/blog/. Ипак, желите да се блог у ствари види на основној адреси: http://www.vasaadresa.com.

У .htaccess датотеку у основном директоријуму сајта ставите следеће:

RewriteEngine on
RewriteCond %{REQUEST_URI} !blog/
RewriteRule (.*) blog/$1 [L]

Овако подешена редирекција ће сваки упит који дође на сајт, усмерити на поддиректоријум blog/ али се то неће видети. Корисник (и што је важније – претраживач) ће и даље мислити да приступа основном директоријуму. Дакле, овим ће садржај сајта бити доступан и ако се приступа домену директно без blog/ путање.

То није све

Након што ово подесите потребно је да усагласите и саму апликацију са новом путањом. Да ли је нешто потребно урадити и шта, то зависи од саме апликацијепа не могу дати неки конкретан предлог.

Обично се негде у аплиакцији подешава која јој је основна адреса, па ту треба уписати нову адресу без blog/ путање.

Такође треба проверити да ли апликација такође приомењује редирекцију за своје потребе, на пример за СЕО оптимизоване адресе докумената и ускладити то са редирекцијом коју смо подесили, ако је то потребно.

Овим подешавањем омогућено да се сајту приступа на адреси основног домена али није онемогућено да се приступа и са старом адресом која садржи blog/ путању. То није баш добро због индексирања на претраживачима. Било би боље да се старе адресе које садрже blog/ редиректију на адресе на новом домену.

Није ми успело да то решим јер се прави тракалица: ако је укључена редирекција са blog/ на основни директоријум то сервер уради, али онда наиђе на правило које путање са основног директоријума редиректује на садржај који се налази у blog/ директоријуму и тако се ствар врти у круг док сервер на крајуне схвати да је  у мртвој петљи и не пријави грешку.

Ако неко успе да реши овај проблем нек јави. Дотад, није тако страшно што се сајт може видети види на обе адресе. У вордпресу то и није проблем, јер ће он сам, ако му се приђе са „погрешном“ адресом, да уради редирекцију на исправну, а пошто се то ради у ПХП коду, то неће бити у сукобу са подешавањима у .htaccess датотеци.


Поделите овај чланак са пријатељима


5 comments to mod_url: Приказ поддиректоријума у руту домена

  • Da li je to potrebno uraditi i kada je WordPress u pitanju? Kod njega je u kontrolnom panelu data opcija da instalacija bude u svom direktorijumu, a blog/sajt da se nalazi/vidi na osnovnoj adresi sajta, s tim da se index.php fajl iz direktorijuma u kojem je instalacija prekopira u root. Kod mene je takav slučaj, i sve se dobro prikazuje posetiocu, takođe vidim da pretraživači nalaze sadržaj mog sajta.. međutim, blog mi se ne pojavljuje ni na jednom blog-agregatoru, pa ne znam da li je problem možda u vezi sa ovakvom postavkom sajta?

  • Ако ти све ради како треба, ништа не пипај. Мислим да од верзије 3, Вордпресс нуди ту опцију и то је сасвим ок решење. Не би требало да то има везе са блог агрегаторима.

  • ivan

    Zato ja uvek otpakujem fajl u lokalu pa ga ponovo arhiviram (tako da se otpakuje u root).
    Ali ako već napravim početničku grešku i otpakujem ga direktno na webserveru u pod-direktorijumu (što mi se često dešavalo), onda jednostavno označim sve fajlove pa MOVE i označim root folder. I voila…problem rešen bez nepotrebnog rewrite-a.
    🙂
    Ako je web aplikacija već instalirana onda jednostavno odradim isti proces kao kada radim migraciju na drugi server. Prilično jednostavna metoda i radi kod većine CMS i forum skripti.

  • Darko

    Odlican tekst.
    Samo imam jedno pitanje:
    Kako omoguciti pristup drugim podfolderima na sajtu?
    Kad iskopiram ovaj kod u .htaccess ne mogu da pristupim ni jednom folderu osim /blog (u tvom primeru) .
    Dakle, kako napraviti da se folder /blog vidi kao root, a ostali da rade kao i do sada ?

    Pozdrav i hvala !

    • Погледај http://pedja.supurovic.net/napredni-url-rewriting-zaobilazenje-pravila-u-htaccess-datoteci-i-password-protection-nezavisnih-direktorijuma . То би требало да помогне.

      Ипак не буди пажљив јер ако тако напавиш можеш врло лако направити карамбол. На пример, можеш нехотице направити директоријум са именом које је већ употребљено у блог директоријуму и тако ефикасно онеспособити блог.

      Боље је, да ако већ редиректујеш блог директоријум, додатне директоријуме стављаш у тај блог директоријум. Тако ћеш све имати под контролом и неће можи да дође до конфликата.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Попуните израз тако да буде тачан: *