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
// menu strony 'index.html' => 'Start', 'express.html' => 'Express', 'international_delivery.html' => 'International delivery', 'preise.html' => 'Preise', 'transportanfrage.html' => 'Transportanfrage', 'impressum.html' => 'Impressum', 'allgemeine.html' => 'Allgemeine Geschäftsbedingungen', 'kontakt.html' => 'Kontakt' ); //określa pozycję ostaniego wystąpienia ciągu //nazwa aktualnego pliku $tytul_strony= $menu[$aktualna_strona];
Plik menu_linki.php
<?php foreach ($menu as $klucz => $wartosc) { if ($klucz == $aktualna_strona) { } else { } } ?>
Na każdej stronie dodałem wpis .
<?php include('switch.php'); include('menu.php'); ?>
Miejsce gdzie generuję linki dla strony. w ramach znaczników body na różnych podstronach
<?php include('menu_linki.php'); ?>
----------------------
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.
<?php case 'express.php': break; case 'international_delivery.php': break; } ?>
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.