do nawigacji

CakePHP 1.2 RC2, brak mod_rewrite i serwery AGH 05-09-2008

Autor: Grzegorz Olejarz. Kategorie: CakePHP , trackback

Brak modułu przepisującego adresy mod_rewrite w przypadku CakePHP objawia się między innymi brakiem „ładnych” adresów. Tyle przynajmniej wyczytałem w manualu Cake’a (link). Niestety brak wspomnianego modułu apache skutkuje jeszcze błędnym działaniem HtmlHelpera, a konkretniej metody HtmlHelper->link. Po długich poszukiwaniach udało mi się znaleźć rozwiązanie, które wydaje się być skuteczne na serwerze AGH.

Krótki tutorial:

  1. Usuwamy pliki .htaccess z 3 katalogów:
    • /.htaccess (katalog główny aplikacji)
    • /app/.htaccess
    • /app/webroot/.htaccess
  2. Edytujemy plik /app/config/core.php i wyłączamy komentarz linijki:
    Configure::write(’App.baseUrl’, env(’SCRIPT_NAME’));
  3. Przed w/w linią dopisujemy:
    $tmp_base = env('SCRIPT_NAME');
    $len = stripos($tmp_base,"index.php") + 9;
    $tmp_base = substr($tmp_base,0,$len);
  4. Linię
    Configure::write(’App.baseUrl’, env(’SCRIPT_NAME’));

    zamieniamy na:

    Configure::write('App.baseUrl', $tmp_base);

Odnośniki, które wyglądały następująco:
http://student.agh.edu.pl/~twoja-nazwa/posts/index
mają postać:
http://student.agh.edu.pl/~twoja-nazwa/index.php/posts/index
Również metoda HtmlHelper->link poprawnie generuje odnośniki użyte w aplikacji.

Po kilku testach okazało się, że opisana metoda nie działa w 100%. Zainstalowanie aplikacji w ścieżce:
http://student.agh.edu.pl/~twoja-nazwa/aplikacja/
nie przekierowuje się automatycznie na index.php:
http://student.agh.edu.pl/~twoja-nazwa/aplikacja/index.php
Wpisanie w przeglądarkę powyższej ścieżki daje dobry rezultat.
Rozwiązaniem tego problemu jest ręczne wpisanie do pliku /app/config/core.php ścieżki do aplikacji:

Configure::write('App.baseUrl', '/~twoja-nazwa/aplikacja/index.php');

Teraz przekierowanie działa poprawnie.

Komentarze»

Na razie pusto- może chcesz zacząć?