Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Przekierowanie 301
CzarnyGsm
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


Witam,

Chciałbym uruchomić nową stronę opartą na Zend. Po starej stronie została masa odnośników, dla których chciałbym zastosować przekierowanie 301. W jaki sposób użyć Zend Router do tego celu? Zaznaczam, że stara strona nie była oparta na Zend'zie i mam duża liczbę odnośników do przekierowania. Przykładowo index.php?plik=12345 chciałbym ustawić na kontrolera =>'files', akcję => 'view', id => '12345'. Dodatkowo czy oprócz tego istniałby sposób na automatycznie przekierowanie ze zmienną pozycją id ?

Z góry dziękuję za pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CzarnyGsm
post
Post #2





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


Super, o to mi chodziło. Dzięki wielkie! Tylko jest jeden bardzo poważny problem za każdym razem jak wpiszę adres np. http://localhost/index.php?plik=26 ładuje się strona główna. Problem leży po stronie adresu z index.php :/ Zapewne winę ponosi linijka z zawartością
  1. RewriteRule ^.*$ index.php [NC,L]
w pliku .htaccess . Niestety, ale wymazanie linijki z plik nie wchodzi w grę bo strona się 'sypie'. Próbowałem kilku sposobów aby to poradzić sobie z tym, ale niestety nie udało się ;/ Dlatego proszę jeszcze o pomoc w rozwiązaniu tego problemu.

Sprawdziłem dla pewności czy kod działa dla innej formy, aby się upewnić czy nie był to błąd po mojej stronie. Także jeżeli ustawię ścieżkę starych adresów np. w taki sposób:
  1. old.type = "Zend_Controller_Router_Route_Regex"
  2. old.route = "index/plik/(\d+)"
  3. old.defaults.module = "default"
  4. old.defaults.controller = "file"
  5. old.defaults.action = "old"
  6. old.map.1 = "plik"
  7. old.reverse = "index/plik/%d"

To wszystko ładnie przekierowuje, ale niestety adresy typu http://localhost/index/plik/123 nie bardzo mi się nada.
Z góry dziękuję za pomoc w rozwiązaniu problemu.

#### EDIT ####
Problem rozwiązany. Należało zawartość z akcji old przenieść do akcji index kontrolera IndexController. Aha, naturalnie robienie routingu do starych adresów w tym przypadku nie ma sensu.
Dziękuje amii za pomoc w rozwiązaniu problemu i za poświęcony czas wszystkim tym, którzy czytali mój problem, ale po prostu nie wiedzieli jak pomóc.
W woli ścisłości to aby jeszcze nie wyskakiwały nam błędy to zawartość w akcji index w kontrolerze IndexController powinna wyglądać tak:
  1.  
  2. public function indexAction()
  3. {
  4. $id = $this->_getParam( 'plik' );
  5. if( $id ) {
  6. // sprawdzenie czy rzeczywiście istnieje taki plik w bazie, jeśli nie to przekieruj na stronę błędu
  7. // pobranie $tytul pliku o zadanym $id
  8.  
  9. //w przekierowaniu powinien być dodatkowo ../ bez tego przekieruje nas na adres http://localhost/index.php/file/title/1233
  10. $this->_redirect( '../file/'.$tytul.'/'.$id,
  11. array( 'code' => 301 )
  12. );
  13. }
  14. }


Pozdrawiam

Ten post edytował CzarnyGsm 10.12.2011, 21:37:48
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 21:12