Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie działa przekierowanie 301 w PHP, błąd 404
Forum PHP.pl > Forum > PHP
Patika
Witam wszystkich,

Jestem nowa, ale może ktoś życzliwy udzieli mi pomocy. Nigdy nie robiłam przekierowania 301, raz się odważyłam ale coś mi nie wyszło sad.gif Chciałam przekierować jedną stronę w prv na drugą z końcówką com. Obydwie są identyczne, więc tym bardziej, bo wiem że google takich rzeczy nie lubi. Strona w prv istnieje ponad 4 lata, ma wysoką pozycję w google, zaś strona com ponad 3 lata i strona index-owa jest pomijana przy najważniejszym dla mnie zapytaniu, natomiast podstrony już wyświetlają się w google... Ale co z tego, jak są oczywiście bardzo daleko. Strona główna jednak musi być zindeksowana, skoro przy pomocy "site: ... " wyświetla ładnie najpierw stronę tytułową, a potem podstrony.

Sprawa jest bardzo pilna, gdyż właśnie teraz najbardziej potrzebuję strony, bardzo proszę o pomoc: dlaczego przekierowanie 301 w PHP nie działa (serwer prv nie obsługuje htacess), użyłam polecenia:

<?php
header(?HTTP/1.1 301 Moved Permanently?);
header(?Location: [url="http://www.xxx.com?.$_SERVER"]);
header(?Connection: close?);
exit();
?>

wkleiłam w pierwszej linijce w pliku index.php. Nic więcej nie robiłam. Czy to może mieć związek z obecną awarią prv? Akurat te dwie rzeczy się niemal nałożyły... Dzień po zrobieniu przekierowania. Wyskakuje stale błąd 404. Może coś niepoprawnie zrobiłam? A może nie da się przekierować z darmowego serwera? sad.gif Chociaż pierwszy dzień działało...
Patika
Czytałam po prostu setki stron z google, jak przekierować w PHP, setki (stad też mam kod), ale dlaczego akurat na mojej stronie to nie działa??

Nie rozumiem też tego: "skrypt musi być wykonany zanim dowolne informacje zostaną wysłane do przeglądarki. Taką informacją może być dowolny znak, znacznik HTML lub nawet "biały odstęp". Jeżeli jakieś informacje zostaną wysłane do przeglądarki, zostanie wyświetlony komunikat typu: "(...) headers already sent by (...)", a do przekierowania nie dojdzie."
ylk
Ale ten kod, który tutaj wkleiłaś jest błędny. Jak go poprawisz do właściwego formatu to będzie działać:
  1. header('HTTP/1.1 301 Moved Permanently');
  2. header('Location: <a href="http://somewhere/&#39%3b%29;" target="_blank">http://somewhere/');</a>

Nagłówki muszą być wysłane w pierwszej kolejności, zanim cokolwiek innego trafi do przeglądarki. Zobrazuję Ci to przykładem:
  1.  
  2. <?
  3. ?>

Powyższy kod jest błędny, bo zanim zostanie wywołana funkcja header(), do przeglądarki zostanie już wysłany pusty wiersz, a php wygeneruje błąd "headers already sent by...".
Wystarczy wywalić tą pustą linię i będzie hulać. Podobnie nie można użyć echo przed header().
Patika
Działa!! Ostatecznie problemem było chyba złe kodowanie strony, zrobiłam ją w klasycznym edytorze html, zmieniłam index.html na index.php, ale kodowania strony już nie i skrypt zwariował wstydnis.gif

Google ładnie mi już wstawiło nową domenę na miejsce starej, mam tylko jeszcze jeden problem: źle przekierowuje podstrony. "Usuwa" ukośnik między domeną główną a podstroną, w efekcie wyskakuje błąd. Zobrazować to można tak:

www.domena1/abc.html -> jakaś podstrona
www.domena2abc.html -> błąd

I znowu nie wiem, jak to naprawić...?
Gligamesh
Prawidłowo wygląda to tak (jak zauważył ylk):
Kod
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://alamakota.pl");



Cytat
www.domena2abc.html -> błąd
może zacznij od adresu, nie jest to adres o poprawnej składni więc ciężko by działał.
Patika
Cytat(Gligamesh @ 9.02.2011, 23:10:35 ) *
może zacznij od adresu, nie jest to adres o poprawnej składni więc ciężko by działał.

Nie rozumiem? Mam stronę główną przykładowo www.domena.pl , jej podstrony to np www.domena.pl/kontakt.html

Po zrobieniu przekierowania stronę indexową przenosi bardzo ładnie - z www.domena.pl na powiedzmy www.nowadomena.pl

Natomiast podstrony, jak wyżej przytoczona www.domena.pl/kontakt.html próbuje mi przenieść w ten sposób, że pomija ukośnik i wychodzi z tego www.nowadomena.plkontakt.html - oczywiście taka podstrona nie istnieje thumbsdownsmileyanim.gif
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.