Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z mod_rewrite
Forum PHP.pl > Forum > Serwery WWW > Apache
Daimos
Witam
mam taki kod:
Kod
AddType application/x-httpd-php .html
RewriteEngine On
RewriteCond %{REQUEST_URI} ^plik/ [NC]
RewriteRule ^plik/([a-zA-Z]+)/?$ /plik.php?id=$1 [L]

czy ktos mi moze wytlumaczyc, dlaczego adres plik/costam/ jest ladnie przekierowywany do pliku, ale zmienna get (w tym wypadku id) nie jest wcale przekazywana :/ wpisalem nawet w pliku plik.php

  1. <?php
  2. print_r($_GET);
  3. ?>
i pusto caly czas :/
Gligamesh
zobacz może RewriteBase pomoże
Daimos
niewiem co mam tym zdzialac
zrobilem tak:

Kod
AddType application/x-httpd-php .html
RewriteEngine On
RewriteCond %{REQUEST_URI} ^plik/ [NC]
RewriteRule ^plik/([a-zA-Z]+)/?$ /plik.php?id=$1 [L]
RewriteBase /

i dalej to samo
webdice
Parser php przetwrza pliki *.html, a nie *.php, zrób tak:

Kod
AddType application/x-httpd-php .html
RewriteEngine On
RewriteCond %{REQUEST_URI} ^plik/ [NC]
RewriteRule ^plik/([a-zA-Z]+)/?$ /plik.html?id=$1 [L]


a w pliku plik.html daj:

  1. <?php
  2. print_r ($_GET)
  3. ?>


Powinno być dobrze, pozdrawiam.
Daimos
jedno i to samo, bo probowalem juz wywalic linijke pierwsza, no ale profilaktycznie sprawdzilem
jaka tablice otrzymalem?
Kod
Array
(
)

wogole cos serwer dziwnie mi sie zachowuje
zmienilem regule, nazwe folderu plik2 i dalej mi przypisuje tylko folder plik ;p a tego plik2 wcale
juz nic nie rozumiem

ok wywalam calkiem linijke, nie potrzebna mi ta pierwsza
czy ktos mi moze pokazac calkowicie dzialajacy kod? kurna nic nie dziala ;p
-------
wstawilem teraz taki kod:
Kod
RewriteEngine On
RewriteCond %{REQUEST_URI} ^plik/ [NC]
RewriteRule ^plik/([a-zA-Z]+)/?$ /plik.php?id=$1 [L]

wogole nie przekierowywuje na plik.php :/ mam blad 404

jest mozliwosc ze to przez serwer? testuje to na windowsie, na krasnalu
chociaz w to watpie bo pamietam wordpress mi ladnie chodzil z takimi przekierowaniami htacces kiedys
----
ok sory, dziala ten kod, tzn przekierowywuje do plik.php (pajaczek mi robi kopie zapasowe, wywalilem je i teraz dziala :/)
dziala ale nie do konca, tak jak wczesniej, jest przekierowanie, nie przekazuje sie zadna zmienna, tablica $_GET jest pusta
Gligamesh
Kod
RewriteEngine On
RewriteBase /plik/


mi też nie chce działać jedna rzecz która ponoć wszystkim działa...
Daimos
nic nie pomaga rewritebase
dodaje w adresie: plik/23/
i dalej mam czysta tablice $_GET

ostatecznie, skoro przekierowanie jest, ale zmienne sie nie przekazuja
to moge zrobic w pliku plik.php wyciaganie reszty danych przez: $_SERVER['PHP_SELF'];
ale ciekawi mnie czego to nie dziala :/
webdice
Kod
RewriteEngine On
RewriteBase /

RewriteRule ^plik/([a-zA-Z]+)/$ plik.php?id=$1 [L]


Przy takiej strukturze plików.

Kod
htdocs
| - .htaccess
| - plik.php
Daimos
dalej to samo, ale blad jest w samym przekierowaniu
bo zmienilem sciezke rewrite na plik2:
Kod
RewriteEngine On
RewriteBase /
RewriteRule ^plik2/([a-zA-Z]+)/$ plik.php?id=$1 [L]

i wywala blad 404
wyglada na to jakby modrewrite, wcale mi nie przekierowywal, tylko po wpisaniu w adresie plik/asdasdasd/
zwyczajnie ignorowal slasha i odpalal plik.php

przy powyzszym htacces, zrobilem plik ttt.php, w adresie dodalem "ttt/" i odpalil mi sie plik ttt.php :/ o co chodzi?:|
webdice
Nie weim czy Ty rozumiesz działanie mod_rewrite, przy tej regule co ja podałem tworzysz plik plik.php w którym odczytujesz zmienna GET, adres wygląda tak:

Kod
http://localhost/plik/id/
Daimos
no ale nie rozumiesz co napisalem, ja wiem co robi mod_rewrite, a przynajmniej co powinien :/
chodzi o to ze nie dziala :/
zrobilem plik .htacces jaki napisales
i zwyczajnie odpala mi plik.php bez zadnych parametrow
sprawdzilem j/w ze np. jak utworzylem plik ttt.php i adres dalem:
Kod
http://localhost/~mojkatalogzhtacces/ttt/cokolwiek

to odpala sie tez zwyczajnie plik ttt.php
mimo ze niema nic w regule htacces o przepisywaniu katalogu ttt
po prostu mod_rewrite wogole mi nie przepisuje, tylko teraz odpala pliki php zamiast folderow
jak wpisze:
Kod
http://localhost/~mojkatalogzhtacces/cos/cokolwiek

odpala mi sie plik cos.php
mimo ze (przypominam)
htacces wyglada tak:
Kod
RewriteEngine On
RewriteBase /
RewriteRule ^plik2/([a-zA-Z]+)/$ plik.php?id=$1 [L]

i w takim wypadku adres:
Kod
http://localhost/~mojkatalogzhtacces/plik2/cos/

wogole nie dziala, zwraca blad 404
Gligamesh
Kod


RewriteEngine On

RewriteBase /plik/
RewriteRule ^plik/([a-zA-Z]+)$ plik.php?id=$1


struktura
htaccess
plik [dir]
plik/plik.php

wywołanie http://localhost/plik/cosczylid

nie wiem czy zrozumiałem problem. mi takie coś działa normalnie.
Daimos
ok problem byl gdzie indziej, na gg mi webdice wytlumaczyl
mialem folder i adres wygladal tak:
http://localhost/~abc/
wstawilem do htacces takie cos:
Kod
RewriteEngine On
RewriteBase /~abc/
RewriteRule ^pliki/([a-zA-Z]+)/$ plik.php?id=$1 [L]

i teraz ladnie dziala smile.gif pozdrawiam i dzieki za pomoc
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.