Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP] przekierowanie z niepoprawnego URL
Forum PHP.pl > Forum > Przedszkole
roghatt
Witam
Moja strona się zmieniła i zmieniły się adresy URL.
Chcę aby stare adresy URL zaindeksowane w Google przekierowywały na stronę główną.
Strona ma adresy typu:
http://www.nazwastrony.pl/index.php?strona=2&id=2

1. W Google mam wejścia na stronę gdzie w adresie znajduje się ID nie używane i wtedy po wejściu nic się nie pojawia.
Czy jest to jakiś rodzaj błędu który można przekierować w htaccess?

Inny miałem pomysł... to ID mam pobierane z bazy i to id jest porównywane do id w konkretnej tabeli, jeśli id się zgadza to wtedy wyświetlane są dane.
  1. $id=$_GET['id'];
  2. $zapytanie = "SELECT * FROM tabela WHERE id='$id'";
  3. $wynik = mysql_query($zapytanie);
  4.  
  5.  
  6. while($row=mysql_fetch_array($wynik))
  7. {
  8. ....

Ja tutaj próbowałem jakoś IF zastosować, ale co jest zapisywane do $wynik jeśli to id nie istnieje w bazie? Próbowałem porównywać do 0, czyli że 0 wyników ale wtedy nic się nie wyświetla na stronie.

2. Jeśli ktoś wpisze w URL strona= tutaj jakaś cyferka pod którą nie istnieje na serwerze strona to wtedy pojawia się biała strona. Czy to jest też jakiś rodzaj błędu który można przekierować w htaccess?
muk4
Takie błędy musisz obsłużyć w PHP.

Przykład:
  1. $id = (int)$_GET['id']; # pamietaj o zabezpieczeniach
  2. $zapytanie = "SELECT * FROM `tabela` WHERE `id`='$id'";
  3. $wynik = mysql_query($zapytanie);
  4. if(mysql_num_rows($wynik) == 0){
  5. echo 'Taka strona nie istnieje!';
  6. {


Wysyłasz zapytanie do bazy żeby zwrócił np. artykuł o danym id. Funkcja mysql_num_rows zwraca liczbę rekordów pasujących do zapytania.
Jeżeli nie ma artykułu o danym id to zwróci 0, bo nie ma żadnego pasującego rekordu.
roghatt
dzięki, to jest właśnie to.
Z ID wyciągane z bazy poradziłem sobie.

Ale niestety tego nie zastosuję do:
http://www.nazwastrony.pl/index.php?strona=2&id=2

elementu zawierającego id po "strona"
ID te mam skonfigurowane w pliku konfiguracyjnym gdzie dla każdego ID mam przypisany konkretny dział na stronie.
Czy tam też można w jakiś sposób w PHP napisać, że jeśli to ID nie istnieje to aby np. automatycznie przekierowywało na stronę główną.
Obecnie po wpisaniu nieodpowiedniego id po "strona" wyświetla się biała strona. Wtedy użytkownik od razu ucieka ze strony.
Tam ID mam przypisane w ten sposób:
  1. $podstrona_kontakt=8;

Wtedy wchodząc na
http://www.nazwastrony.pl/index.php?strona=8 otwiera się nam strona z kontaktem.
Ale właśnie jak już po wpisaniu innego id nieistniejącego mamy białą stronę.
muk4
Pokaż kod który ładuje podstrony bo nie mogę sobie tego wyobrazić Jak sprawdzasz którą stronę otworzyć?
roghatt
robię to switchem
  1. switch ($_GET['strona']) {
  2.  
  3. case $podstrona_kontakt:
  4. include ("kontakt.php");
  5. break;
  6. ....


oczywiscie to jest kawalek kodu dla jednej podstrony, tutaj jest ich tyle ile chce miec podstron
muk4
switch jest taki sprytny że ma opcję default. Poczytaj, zastosuj, pochwal się(?) co zrobiłeś.
roghatt
aj no rzeczywiście, na początku olałem ten default bo wydawał mi się całkowicie niepotrzebny, teraz już wiem, że zrobiłem źle smile.gif

  1. switch ($_GET['strona']) {
  2.  
  3. case $podstrona_kontakt:
  4. include ("kontakt.php");
  5. break;
  6.  
  7. default:
  8. include ("index.php");
  9. break;
  10. }


Dzięki wielkie za pomoc i za podpowiedzi muk4
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.