Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nie działa przekierowanie 301 w PHP, błąd 404
Patika
post 6.02.2011, 14:40:23
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2011

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


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...
Go to the top of the page
+Quote Post
ylk
post 6.02.2011, 15:01:34
Post #2





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

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


http://lmgtfy.com/?q=PHP.+Redirect+301+Moved+Permanently
Go to the top of the page
+Quote Post
Patika
post 6.02.2011, 15:04:22
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2011

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


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."

Ten post edytował Patika 6.02.2011, 15:06:15
Go to the top of the page
+Quote Post
ylk
post 6.02.2011, 15:15:31
Post #4





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

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


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().
Go to the top of the page
+Quote Post
Patika
post 9.02.2011, 20:21:56
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2011

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


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ć...?
Go to the top of the page
+Quote Post
Gligamesh
post 9.02.2011, 23:10:35
Post #6





Grupa: Zarejestrowani
Postów: 227
Pomógł: 0
Dołączył: 13.06.2003
Skąd: rykowice

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


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ł.

Ten post edytował Gligamesh 9.02.2011, 23:11:50
Go to the top of the page
+Quote Post
Patika
post 10.02.2011, 15:26:22
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2011

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


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

Ten post edytował Patika 10.02.2011, 15:34:28
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: 6.05.2025 - 08:18