Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]przekierowanie ze starego adresu
Forum PHP.pl > Forum > Przedszkole
Pcbecaw
czesc. od razu pisze, ze nie chodzi mi o przekierowanie ze starej domeny na nową. otoz, mam u siebie linki w postaci:
art.php?t=nazwaarta i już utworzyłem friendly linki, ktore robia mi xxx.pl/nazwaarta/
problem polega na tym, że chciałbym przekierowywać na xxx.pl/nazwaarta/ jeśli otworzy się adres xxx.pl/art.php?t=nazwaarta tylko nie mam bladego pojęcia jak to zrobić. obecny plik htacces wygląda tak:
  1. RewriteEngine On
  2. RewriteRule ^([^/]*)/$ /art.php?t=$1 [L]

wie ktoś może jak to zrobić? dodam tylko, że coś takiego:
Kod
RewriteRule ^(.*)$ http://xxx.pl/$1/ [R=301,L]

przekierowuje prawidłowo (w tym wypadku dodaje slash nakońcu, ale chciałem tylko napisać sposób, w jaki może odpalić przekierowanie docelowe)
pozdrawiam wink.gif

tak sobie myślę, czy może można z poziomu php dodać jakąś formułe, która usuwałaby zmienną art.php?t= z adresu?
Pcbecaw
bardzo dziękuję za zainteresowanie tematem.
próbowałem zrobić analogicznie, np. w ten sposób:
  1. RewriteCond %{QUERY_STRING} t=([^&;]*)
  2. RewriteRule . /%1 [R=301]

ale teraz przekierowuje wszystko do adresu w postaci: (jeśli docelowy jest art.php?t=nazwaarta
http://xxx.pl/nazwaarta?t=nazwaarta
czyli po prostu art.php zamieniło mi na nazwaarta. teraz trzeba by chyba usunąć przypisywanie dalszej części, ale nie bardzo wiem jak.
erix
Pokaż cały htaccess.
Pcbecaw
Kod
RewriteEngine On
RewriteRule ^([^/]*)/$ /art.php?t=$1
#RewriteBase /
RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$
RewriteRule ^(.*)$ http://xxx.pl/$1/ [R=301]
RewriteCond %{QUERY_STRING} t=([^&;]*)
RewriteRule . /%1 [R=301]
erix
A nie przypadkiem jedno żądanie wywołuje dwa i wpada na dwie reguły?
Pcbecaw
tak moze od 3 dni sie mecze z tym htaccess i wciaz nie moge dojsc do tego, jak zrobic to 'poukładanie'. jakby to rozwiązać?
erix
RewriteLog i będziesz widział, co jest do czego wykorzystywane.
Pcbecaw
po zredukowaniu ostatnich dwoch linijek do :
Kod
RewriteCond %{QUERY_STRING} t=([^&;]*)
RewriteRule . / [R=301]

przekierowuje do postaci:
http://xxx.pl/?t=nazwaarta
czyli już jesteśmy blisko. teraz tylko trzeba pozbyć się ?t=, ale jak?
erix
Daj gdzieś flagę [L].
Pcbecaw
dodałem flage po kolei chyba do kazdej reguly i nic. a moze dodać ją do tego poprzedniego .htaccess, ktroe 2x dodawalo nazwaarta?
erix
Klawisze zaczną wypadać, jak pokombinujesz? tongue.gif
Pcbecaw
po dodaniu flagi do jakiejs linijki do drugiej wersji htacces wychodzi Internal Server Error
, a po dodaniu flagi do jakiejs linijki z pierwszej wersji htaccess wychodzi również Internal Server Error tongue.gif
pokombinowałbym, tylko w ogole nie wiem jak sad.gif (sprawdziłem pokolei wszystkie linijki)
Pcbecaw
próbowalem z tym rewritelog i z tego co wyczytałem, to mogę to zrobić tylko na localu, a tam to jest niemozliwe, bo wszystko mam dostosowane już do domeny. nie wiem czy dobrze zrozumiałem, ale żeby odcyztać rewritelog to muszę znać ściezke do tego na serwerze?
erix
Postaw sobie na lokalu, co za problem?
Pcbecaw
na localu (np. xampp) strona byłaby w katalogu, a ja już wzsystkie linki, htaccess itd. mam powpisywane, żeby nie wybierało z katalogu i jeśli to samo co mam teraz postawiłem na katalogu, to wszystko sie sypało. musiałbym naprawic (chociaz wydaje mi sie, ze bym tego nie zrobił nawet, bo wlasnie dlatego testuje na testowym serwerze a nie na localu, bo nie moglem ogarnac friendly urli na localu) sprawdzic rewritelog, cofnac wszystko do momentu i znowu wgrac na testowy serwer. na 100% bym tego nie naprawił, więc ta opcja u mnie odpada. jest jakaś możliwość może metodą prób i błędów na zrobienie tego htaccess, zebym w koncu utrafił na oczekiwane rozwiązanie? tylko chciałbym wiedzieć czego mogę próbować i będe robił wszystko, zeby to sie udało
erix
Cytat
na localu (np. xampp) strona byłaby w katalogu

A dlaczego?
Pcbecaw
a w sumie masz rację sciana.gif
zaraz napiszę wyciąg z rewritelog

poddaje sie... nie wiem jak wyciągnąć z xamppa raport z rewritelog wacko.gif

dodałem coś takiego:
Kod
RewriteLog "logs/rewrite.log"
RewriteLogLevel 4

do httpd.conf xamppa, zrestartowałem serwer i plik z raportem się nie pojawił. cos źle robie?

jest! mam mam!!!


  1. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/art.php -> art.php
  2. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (3) [perdir C:/xampp/htdocs/] applying pattern '^([^/]*)/$' to uri 'art.php'
  3. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/art.php -> art.php
  4. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (3) [perdir C:/xampp/htdocs/] applying pattern '^(.*)$' to uri 'art.php'
  5. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (4) [perdir C:/xampp/htdocs/] RewriteCond: input='/art.php' pattern='^/[^.]+[^/]$' => not-matched
  6. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/art.php -> art.php
  7. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (3) [perdir C:/xampp/htdocs/] applying pattern '.' to uri 'art.php'
  8. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (4) [perdir C:/xampp/htdocs/] RewriteCond: input='t=nazwaarta' pattern='t=([^&;]*)' => matched
  9. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (2) [perdir C:/xampp/htdocs/] rewrite 'art.php' -> '/'
  10. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (2) [perdir C:/xampp/htdocs/] explicitly forcing redirect with http://127.0.0.1/
  11. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (1) [perdir C:/xampp/htdocs/] escaping http://127.0.0.1/ for redirect
  12. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (1) [perdir C:/xampp/htdocs/] redirect to http://127.0.0.1/?t=nazwaarta [REDIRECT/301]
  13. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/ ->
  14. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (3) [perdir C:/xampp/htdocs/] applying pattern '^([^/]*)/$' to uri ''
  15. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/ ->
  16. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (3) [perdir C:/xampp/htdocs/] applying pattern '^(.*)$' to uri ''
  17. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (4) [perdir C:/xampp/htdocs/] RewriteCond: input='/' pattern='^/[^.]+[^/]$' => not-matched
  18. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/ ->
  19. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (3) [perdir C:/xampp/htdocs/] applying pattern '.' to uri ''
  20. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (1) [perdir C:/xampp/htdocs/] pass through C:/xampp/htdocs/
  21. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2de5858/subreq] (3) [perdir C:/xampp/htdocs/] strip per-dir prefix: C:/xampp/htdocs/index.php -> index.php
  22. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2de5858/subreq] (3) [perdir C:/xampp/htdocs/] applying pattern '^([^/]*)/$' to uri 'index.php'
  23. 127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2de5858/subreq] (1) [perdir C:/xampp/htdocs/] pass through C:/xampp/htdocs/index.php


problem w tym, że nci z tego nie rozumiem

a więc 2 błędy, jeśli dobrze to zinterpretowałem:
Kod
127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2dd4828/initial] (4) [perdir C:/xampp/htdocs/] RewriteCond: input='/art.php' pattern='^/[^.]+[^/]$' => not-matched

Kod
127.0.0.1 - - [07/sie/2012:14:42:01 +0200] [127.0.0.1/sid#935148][rid#2ddc840/initial] (4) [perdir C:/xampp/htdocs/] RewriteCond: input='/' pattern='^/[^.]+[^/]$' => not-matched


htaccess cały wygląda tak:
Kod
RewriteEngine On
RewriteRule ^([^/]*)/$ /art.php?t=$1
#RewriteBase /
RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$
RewriteRule ^(.*)$ http://127.0.0.1/$1/ [R=301]
RewriteCond %{QUERY_STRING} t=([^&;]*)
RewriteRule . / [R=301]

czyli z tego wynika, że błąd jest w linijce nr 4, tylko jak to zdebugować?

wzialem z kohany i dziala ;p
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.