Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][HTML][PHP]Przekierowanie 301 i przyjazne linki, Chcę dla prostej strony zrobić to co powyżęj opisałem
fiasko
post 2.06.2010, 23:29:02
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


Witam

Od wczoraj przeczytałem wszyto co można na temat jak zrobić przekierowanie 301 i dalej nie za bardzo rozumiem jak to działa.


Zadania , jakie muszę zrobić aby strona działała tak jak tego chcę:


- przekierować podstrony serwisu z linków .php na .html oraz wprowadzić linki.
- oczywiście usunięcie dupicate content - czyli żadna strona nie może być widziana pod dwoma adresami np. kontakt.php , express.php itd.
- strony wpisane tak http://domena.pl na http://www.domena.pl
- przyjazne linki (czyli np zamiast sklep_komputerowy.html sklep-komputerowy.html .


Generuje mam już gotową stronę w PHP.

index.html
podstrony:

kontakt.php
express.php

itd.Wszystko jest w jednym katalogu głównym serwera.

Linki strony generuję w następujący sposób:

menu.php
  1. // menu strony
  2. $menu = array(
  3. 'index.html' => 'Start',
  4. 'express.html' => 'Express',
  5. 'international_delivery.html' => 'International delivery',
  6. 'preise.html' => 'Preise',
  7. 'transportanfrage.html' => 'Transportanfrage',
  8. 'impressum.html' => 'Impressum',
  9. 'allgemeine.html' => 'Allgemeine Geschäftsbedingungen',
  10. 'kontakt.html' => 'Kontakt'
  11.  
  12. );
  13.  
  14. $p = strrpos($_SERVER['PHP_SELF'],'/');
  15. //określa pozycję ostaniego wystąpienia ciągu
  16. $aktualna_strona1 = substr($_SERVER['PHP_SELF'], $p+1 );
  17. //nazwa aktualnego pliku
  18.  
  19. $aktualna_strona =str_replace('.php','.html', $aktualna_strona1);
  20.  
  21. $tytul_strony= $menu[$aktualna_strona];
  22.  
  23.  
  24.  
  25.  
  26.  




Plik menu_linki.php

  1. <?php
  2.  
  3. foreach ($menu as $klucz => $wartosc)
  4. {
  5. if ($klucz == $aktualna_strona)
  6. {
  7. echo "<font class=\"linkitop_odw\">" . $wartosc . "</font>" ;
  8. echo '&nbsp&nbsp&nbsp&nbsp';
  9. }
  10. else
  11. {
  12. echo "<a class=\"linkitop\" href=\"$klucz\">".$wartosc."</a>";
  13. echo '&nbsp&nbsp&nbsp&nbsp';
  14. }
  15. }
  16.  
  17.  
  18. ?>


Na każdej stronie dodałem wpis .

  1. <?php
  2. include('switch.php');
  3. include('menu.php');
  4. ?>




Miejsce gdzie generuję linki dla strony. w ramach znaczników body na różnych podstronach

  1. <?php
  2. include('menu_linki.php');
  3. ?>



----------------------
Teraz funkcje , które sterują przekierowaniem :


switch.php

napisna tylko dla dwóch adresów bo jest ona w fazie moich testów i nie wiem czy nie ma gdzieś w niej błędu.
  1. <?php
  2. switch(basename($_SERVER['PHP_SELF'])){
  3. case 'express.php':
  4. header('HTTP/1.1 301 Moved Permanently');
  5. header('Location: express.html');
  6. break;
  7.  
  8. case 'international_delivery.php':
  9. header('HTTP/1.1 301 Moved Permanently');
  10. header('Location: international_delivery.html');
  11. break;
  12. }
  13. ?>


wpis w pliku

.htaccess



RewriteEngine On

RewriteRule (.*)\.html $1\.php

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ <a href="http://www.domena.de/" target="_blank




Problem mój polega na tym, że to przekierowanie nie chce mi działać. Co jest nie tak ? Proszę o jakieś wskazówki jak się robi przekierowanie.
Nie robię strony z parametrami podkatalogami itd. więc z góry proszę o proste przykłady .

Niech mi ktoś wytłumaczy jak zrobić jakieś przekierowanie tak aby uwzględnić również przyjazne linki.

Funkcję , która przerabia mi ciąg i przerabia na przyjazne linki mam już nawet napisaną. Ale nie mam pojęcia jak przekierować potem wygenerowane dynamicznie adresy na pliki o nazwach które np. były international_derlivery.php a po konwersji są jako international-delivery.html. znowu problem z przekierowaniem.



-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------


Znalazłem jeden z błędów , który powodował zamieszanie z wykonywaniem przekierowanie w pliku switch.php.

Okazało się , że jest to boom spowodowany dodawaniem trzybajtowego nagłówka utf-8 na jego początku. Po zapisaniu plików w notepad++ z powodzeniem skrypt odpalił.

Linki się przekierowują na końcówki z rozszerzeniem .html.

Wszystko byłoby super gdyby to było wszystko.

Do pliku htaccess. zrobiłem nowe wpisy

RewriteRule ^express.html$ express.php [L]
RewriteRule ^international_delivery.html$ international_delivery.php [L]

Podałem celowo tylko dwa wpisy podstron.

Oczywiście strona ma więcej linków i mam problem z tym jak masowo przekierować pliki php na pliki html.

Z pomocą przyszła więc regułka, która z powodzeniem zastąpiła obydwa powyższe wpisy.

RewriteRule (.*)\.html $1\.php

Niestety radość moja nie trwała długo ponieważ po zamianie linków na przyjazne znowu napotkałem schody.

Otóż po zamianie linków php na html powstał jeden problem z przyjaznymi linkami.

Gdy wygenerowałem sobie pierwszy link na podstawie nazwy pliku international_delivery.php moim oczom ukazał się link w następującej postaci:

international-delivery.html . Wszystko byłoby ok gdyby zamiast podkreślnika nie było tam myślnika, który sobie celowo wygenerowałem aby wprowadzić przyjazne linki.

Znowu problem przekierowania się pojawia:

Jak u diaska przepisać masowo(zbiorczo) wszystkie podobne wygenerowane linki ?

Mogę to zastąpić jednorazowo dla konkretnego linku.

RewriteRule ^international-delivery.html$ international_delivery.php [L]

Ale chcę aby przepisywanie działało dynamicznie w oparciu o przekierowanie 301, które stosuję w php.



Póki co koncepcja strony jest cały czas oparta na jednym katalogu, bo chcę zrozumieć trze przekierowania w prostej postaci. Nie ma w Polsce niestety żadnego porządnego FAQ, które wyczerpująco opisuje jak przekierować stronę. W dodatku tu na forum też widzę każdy się udziela jak może.

Ten post edytował fiasko 3.06.2010, 13:12:02
Go to the top of the page
+Quote Post
#luq
post 3.06.2010, 10:45:39
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Ale Ty chyba nie kojarzysz do czego używa się nagłówka 301.
Nagłówek ten wysyłasz jeśli linka miałeś np. takiego

Kod
/foo/bar.php


a teraz to co było na /foo/bar.php masz na

Kod
/bla/bar.php


na /foo/bar.php dajesz 301 na /bla/bar.php.
wtedy Google wchodząc na /foo/bar.php dostaje info, że ta strona została przeniesiona na inny link i w swoich indeksach zmienia ten link na nowy.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
fiasko
post 3.06.2010, 13:08:54
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


HM.


Ale ja daję przekierowanie po to żeby nie było dwóch stron pod tym samym adresem. Jak przepisałem linki na z rozszerzenia php na html to powstał mi porblem taki, że strona była pod dwoma adresami.
Dlatego też dałem przekierowanie z linków o rozszerzeniu PHP na linki o rozszerzeniu .html

interesuje mnie jeszcze tylko jak przepisać grupy podobnych adresów RewriteRule ^international-delivery.html$ international_delivery.php [L]

Chodzi mi o hurtowe przepisywanie adresów.

Go to the top of the page
+Quote Post
#luq
post 3.06.2010, 17:34:23
Post #4





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Ale dlaczego nagłówek 301 Moved Permanently?
Location nie starczy?


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
fiasko
post 13.06.2010, 15:35:27
Post #5





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


Cytat
Ale dlaczego nagłówek 301 Moved Permanently?
Location nie starczy?


No bo samo przekierowanie w :
  1. header('HTTP/1.1 301 Moved Permanently');
  2. header('Location: express.html');


To za mało:

Co z tego, ze przekieruję w PHP jak gdy nie dam reguły w celu przepisania linków w .htaccess ?

No chyba, że to można jakoś inaczej załatwić, ale samo przekierowanie powyżej u mnie nie załatwia sprawy. Bez regułki .htaccess widzę tylko błąd serwera.

no i jak zwykle pomoc =0

Czy jest na tym forum ktoś kto się zna i potrafi udzielić odpowiedzi questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
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 Wersja Lo-Fi Aktualny czas: 27.04.2025 - 08:13