Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekierowanie pliku na adres
Forum PHP.pl > Forum > Serwery WWW
tosiek
Witam. Mam problem z przekierowaniem np.:
*adres.pl/info.htm
oraz
*adres.pl/info

na adres.pl/info/

Mam regułę która przepisuje adres:
Kod
RewriteRule ^([a-z0-9_]*)/?$ ./$1\.htm [L,NC]


Ale nie wiem jak przekierować z tamtych na ten przepisywany ze slashem na końcu.


Przy takim się zapętla:
Kod
RewriteCond %{REQUEST_URI} ^/[^?]+\.htm(\?.*)?$
RewriteRule ^(.*)$ http://adres.pl/info/ [R,L,NC]


przy podobnych do tego też się zapętla lub nie działa:
Kod
RewriteRule ^([a-z0-9_]*).htm$ http://adres.pl.pl/$1/[R,L,NC]


to też:
Kod
RewriteRule ^([a-z0-9_]*)\.htm$ http://adres.pl.pl/$1/ [R,L,NC]


Obojętnie czy dam przekierowanie przed czy po przepisaniu i tak nie działa.
griken
spróbuj tak:

Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.twoja-domena.pl$1/ [L,R=301]
tosiek
Niestety adres wszystkie wyglądają tak:

adres.pl/info.htm/
erix
Kod
RewriteBase /
RewriteRule ([a-z]+)\.htm /$1/ [L]

RewriteCond %{REQUEST_URI} (.*?)/$
RewriteRule ([a-z]+)$ /$1/ [L]


Pisane z palca, może nie działać.
tosiek
Niestety te wyżej nawet po przeróbkach się zapętlają albo nie działają.


Na razie mam takie
  1. <?php
  2. RewriteRule ^$ <a href=&#092;"http://integratus.tosiek.pl/informacje/\" target=\"_blank\">http://integratus.tosiek.pl/informacje/</a> [R=301,NC,L]
  3. RewriteRule ^([a-z_0-9]+)$ <a href=&#092;"http://integratus.tosiek.pl/$1/\" target=\"_blank\">http://integratus.tosiek.pl/$1/</a> [R=301,NC,L]
  4. RewriteRule ^([a-z_0-9]+)/$ ./$1.htm [L,NC]
  5. ?>




I działa przepisywanie ze slashem i bez na końcu, jesli nie ma slasha na końcu przekierowuje na ze slashem /
np.
http://integratus.tosiek.pl/informacje
na
http://integratus.tosiek.pl/informacje/

Ale już plików z rozszerzeniem .htm nie chce. nie działa ani (.htm) ani [.htm] ani \.htm sam już nie mam pomysłu może w złej regule tego używam, ale nawet próbouję na sztywno dla jednego pliku to i tak nie działa.
erix
Nie przekierowywuj na ścieżkę bezwzględną (z http), bo to nie zadziała i na pewno będzie się zapętlać. Musi być ścieżka relatywna do serwera.
tosiek
w tym problem że jesli nie przekieruję na bezwzględny adres z http to nie zadziała smile.gif
erix
Ma być względem "/". Żaden URL nie ma prawa się pojawić.
tosiek
sorki. podąłem w php powinno wyglądać tak:
Kod
RewriteRule ^$ http://integratus.tosiek.pl/informacje/ [R=301,NC,L]
RewriteRule ^([a-z_0-9]+)$ http://integratus.tosiek.pl/$1/ [R=301,NC,L]
RewriteRule ^([a-z_0-9]+)/$ ./$1\.htm [L,NC]


dziala po mzianie na:
Kod
RewriteRule ^$ ./informacje/ [R=301,NC,L]
RewriteRule ^([a-z_0-9]+)$ ./$1/ [R=301,NC,L]
RewriteRule ^([a-z_0-9]+)/$ ./$1\.htm [L,NC]


ale przy dodnaiu np. na początek:
RewriteRule ^.*\.htm$ ./informacje/ [R=301,NC,L]
lub
RewriteRule ^informacje\.htm$ ./informacje/ [R=301,NC,L]
lub
RewriteRule informacje\.htm$ ./informacje/ [R=301,NC,L]
Nie działa sad.gif
erix
Yyyy, ta kropka przed /, to zamierzone działanie?
tosiek
Huuh chbya jak dla mnie odkryłem swoja amerykę, i chbya upewniłem się na 100% że zawsze by się zapętlało smile.gif

bo po przepisaniu:
RewriteRule ^([a-z_0-9]+)/$ $1\.htm [L,NC]

cały czas ten adres np. /informacje/ korzysta z pliku informacje.htm

więc chcąc przekierować plik informacje .htm:
RewriteRule ^([a-z_0-9]+)\.htm$ /$1/ [R=301,NC,L]

Będziemy przekierowywali zawsze /informacje/ na /informacje/ na /informacje/,

przekierowanie działa jak trzeba ale robi się pętla bo /informacje/ to to samo co informacje.htm więc za pomocą tego przekierowujemy obydwa:
RewriteRule ^([a-z_0-9]+)\.htm$ /$1/ [R=301,NC,L]




Więc trzeba zaprząc do roboty php zeby zmienić adres w przeglądarce np taki skrypt:
  1. <?php
  2. $adress = $_SERVER["REQUEST_URI"];
  3. if (substr($adress, -4) == ".htm") {
  4.        header("HTTP/1.1 301 Moved Permanently");
  5.        header("location:http://integratus.tosiek.pl/" . substr($adress, 1, -4) . "/");
  6.        exit;
  7. }
  8. ?>


ten akurat jest ustawiony na rozszerzenie .htm i zmienia adres z nazwa.htm na /nazwa/

W sumie za pomoca htaccess z regułami np.:

RewriteCond %{request_uri} !(.*)/&

bądź podobnymi warunkami chyba by działały ale ja nie znalazłem.

Nie zadziała tak normalnie bo jedno wywoła zawsze drugie

Obrazek tongue.gif strzali prowadza do wywolan powodowanych przez regułę smile.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.