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 (1 - 6)
pawv
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 5
Dołączył: 9.02.2011
Skąd: warszawa

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


  1. 'plik' => array(
  2. 'route' => 'index.php?plik=:id',
  3. 'defaults' => array(
  4. 'controller' => 'files',
  5. 'action' => 'view'
  6. ),
  7. ),


Wtedy parametr :id będzie przyjmował zmienne wartości
Go to the top of the page
+Quote Post
CzarnyGsm
post
Post #3





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

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


Źle się wyraziłem w pierwszym poście. W starym serwisie mam odnośniki index.php?plik=12345, zaś w nowym file/title/12345. W jaki sposób mogę zrobić przekierowanie 301 z index.php?plik=12345 na file/title/12345 ? Zależy mi na tym, aby w wyszukiwarce google nastąpiła zamiana starych adresów na nowe.
Z góry dziękuję za pomoc.

Ten post edytował CzarnyGsm 10.10.2011, 13:21:52
Go to the top of the page
+Quote Post
KrzysiekWildfire
post
Post #4





Grupa: Zarejestrowani
Postów: 93
Pomógł: 11
Dołączył: 27.10.2010
Skąd: Kutno/Poznań

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


To w kontrolerze indexController sprawdzasz, czy masz $_GET['plik'] i zrobić przekierowanie na nowy adres. Google bez problemu poradzi sobie z tym.
Go to the top of the page
+Quote Post
CzarnyGsm
post
Post #5





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

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


Czyli mówisz, aby najpierw w kontrolerze pobrać id pliku za pomocą $_GET['plik']. Następnie pobieram z bazy danych tytuł pliku. I co dalej? W jaki sposób zrobić trasę z index?plik=$id na ścieżkę file/$title/$id? Można prosić o kawałek kodu w jaki sposób przekierowuje na nowy adres?

Przykładowo na stronie opartej o Zend fw działa link http://localhost/file/demo-pes-11/352 , a na starym cms'ie mam adres http://staryadres.pl/index.php?plik=352 .
Mam ustawioną wcześniej taką ścieżkę.
  1. file.type = "Zend_Controller_Router_Route_Regex"
  2. file.route = "file/(.+)/(.+)"
  3. file.defaults.module = "default"
  4. file.defaults.controller = "file"
  5. file.defaults.action = "view-file"
  6. file.map.1 = "tytul"
  7. file.map.2 = "id"
  8. file.reverse = "file/%s/%d"


Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
amii
post
Post #6





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


1. Zrób routing starych adresów
  1. $route = new Zend_Controller_Router_Route_Regex(
  2. 'index.php?plik=(\d+)',
  3. 'controller' => 'file',
  4. 'action' => 'old'
  5. ),
  6. 1 => 'plik'
  7. )
  8. );




2. zrób akcję do obsługi starych URL-i coś na kształt:

  1. public function oldAction()
  2. {
  3.  
  4.  
  5. $id = $this->_getParam( 'plik' );
  6. // zmienną $tytul musisz pobrać z bazy szukając po id
  7.  
  8. $this->_redirect( 'file/'.$tytul.'/'.$id,
  9. array( 'code' => 301 )
  10. ); //przekierowanie na nową akcję
  11. }



--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
CzarnyGsm
post
Post #7





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

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

 



RSS Aktualny czas: 20.08.2025 - 07:14