Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mod_rewtite() - możliwości
Forum PHP.pl > Forum > PHP
Athlan
Mam pytanie dotyczące możliwości mod_rewrite(). Posiadam stronę, która ma adresy:
- http://moj-serwis/page.php?zmienna=q
- http://moj-serwis/reghister.php?zmienna=q
- http://moj-serwis/info.php?zmienna=q

chciałbym te adresy przepisac w ten sposób:
- http://moj-serwis/q/page.php
- http://moj-serwis/q/reghister.php
- http://moj-serwis/q/info.php

czyli główny wzór to
http://adres/plik?zmienna=wartość
na

http://adres/wartość/plik

jest taka możliwość?

pozdrawiam smile.gif

P.S

i jeszcze się zapytam... dlaczego mi nie działa mod rewrite
Cytat
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.0.55 (Win32) php/5.1.2 Server at localhost Port 80

w pliku logów Apache'a (apache_error.log) jest następująca adnotacja:
Cytat
[Mon Jul 03 14:05:15 2006] [alert] [client 127.0.0.1] D:/server/www/mr/.htaccess: Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration

skoro w pliku httpd.conf mam usatwione:
Kod
LoadModule rewrite_module modules/mod_rewrite.so


plik .htaccess wygląda tak:

(tak dla testu zrobiłem)
Kod
RewriteEngine On
RewriteBase /


zdraviam smile.gif
bełdzio
try:
Kod
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/(.*)\.php$ /$2.php?zmienna=$1
Athlan
@bełdzio, niestety nie działa... mam sobie plik index.php:

  1. <?php
  2. echo $_GET['zmienna'];
  3. ?>

i plik .htaccess :
Kod
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/(.*)\.php$ /$2.php?zmienna=$1


jak wpisuje http://localhost/mr/index.php?zmienna=blablabla to normlanie zwraca w treści dokumentu tekst ze zmiennej, ale jak podaje http://localhost/mr/blablabla/index.php to mówi że nie ma pliku smile.gif

jak mam zrobić, aby po wpisaniu http://localhost/mr/blablabla/index.php wyświetliło mi się w pliku http://localhost/mr/index.php tekst "blablabla"

?
bełdzio
Cytat(Athlan @ 3.07.2006, 19:16 ) *
jak wpisuje http://localhost/mr/index.php?zmienna=blablabla to normlanie zwraca w treści dokumentu tekst ze zmiennej

no a co ma podać skoro drukujesz tą wartość? :| ja chyba to czegoś nie rozumiem smile.gif
Athlan
linki:
- http://moj-serwis/page.php?zmienna=q
- http://moj-serwis/reghister.php?zmienna=q
- http://moj-serwis/info.php?zmienna=q

ma akceptować jako:
- http://moj-serwis/q/page.php
- http://moj-serwis/q/reghister.php
- http://moj-serwis/q/info.php

proste, ale nie w praktyce smile.gif

czyli jak w kodzie jest:
  1. <?php
  2. echo $_GET['zmienna'];
  3. ?>


i wpisze http://moj-zajebisty-serwis/info.php?zmienna=kupa to wyświetli kupa

a jak wpisze

http://moj-zajebisty-serwis/kupa/info.php

to też mi wyświetli kupa biggrin.gif

jasno opisałem?
piczu
jasno opisales i jasno beldzio napisal ci rozwiazanie.
Athlan
no tak, ale :

Cytat
jak mam zrobić, aby po wpisaniu http://localhost/mr/blablabla/index.php wyświetliło mi się w pliku http://localhost/mr/index.php tekst "blablabla"


bo teraz jak wpisze adres http://localhost/mr/blablabla/index.php to mówi że nie ma pliku smile.gif

EDIT. oczywiście z plikiem .htaccess który dał mi bełdzio

pozdro smile.gif
mls
Chyba to mówi samo za siebie?
Cytat
w pliku logów Apache'a (apache_error.log) jest następująca adnotacja:
Cytat

[Mon Jul 03 14:05:15 2006] [alert] [client 127.0.0.1] D:/server/www/mr/.htaccess: Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration
Athlan
to było za czasów tego pliku:

Kod
RewriteEngine On
RewriteBase /


teraz ten plik wygląda tak:

Kod
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/(.*)\.php$ /$2.php?zmienna=$1


proszę, czytaj UWAŻNIE CAŁY topick smile.gif, nawiązując do tematu powtażam pytanie 3 raz:

Cytat
no tak, ale :

Cytat
jak mam zrobić, aby po wpisaniu http://localhost/mr/blablabla/index.php wyświetliło mi się w pliku http://localhost/mr/index.php tekst "blablabla"


bo teraz jak wpisze adres http://localhost/mr/blablabla/index.php to mówi że nie ma pliku

EDIT. oczywiście z plikiem .htaccess który dał mi bełdzio

pozdro


pozdro smile.gif
Hacker
Sprawdz czy taki plik działa.
Kod
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/(.*)$ /$2?zmienna=$1
zur887
wsadź plik .htaccess do folderu mr, chyba że chcesz na stałe to przerobić:
Kod
RewriteEngine On
RewriteRule /mr/(.*)/(.*).php$ /mr/$2.php?zmienna=$1
Athlan
Hacker, zur887: Wasze sposoby nie działają...

poprostu jak wpisuje adres:
http://localhost/mr/blablabla/index.php
to on nie bierze pod uwagę tego:
http://localhost/mr/index.php?zmienna=blablabla

tylko szuka pliku index.php w folderze /blablabla/

czyli jak mam to zrobić, o ile jest to możliwe?

btw. plik .htaccess jest dalej w folderze głównym smile.gif

pozdrawiam smile.gif

P.S. jak robie tak:

Kod
RewriteEngine On
RewriteRule /mr/(.*).php$ /mr/$1.html


i wpisuje http://adres/index.html to mowi że plik nie istnieje, choć jest plik http://adres/index.php sleep.gif
LamaMASTER
No to problem z serwerem - nie potrzebnie lane posty, dobre rozwiązanie zostało już wcześniej podane. Mógłbyś to chociaż najpierw przetestować na jakimś normalnym serwerze winksmiley.jpg
Apo
Cytat
P.S. jak robie tak:

Kod
RewriteEngine On
RewriteRule /mr/(.*).php$ /mr/$1.html


no to tu i tak masz blad bo powinno byc:

Kod
RewriteEngine On
RewriteRule ^/mr/(.+)\.php$ /mr/$1.html


pozdro ze slowacji smile.gif
Athlan
Żeby nie zaśmiecać forum podtrzymam w tym temacie... otóż, moduł mod_rewrite() jest załadowany jak widać tu:
http://blog.nowiny.pl/info.php
Cytat
Apache -> Loaded Modules -> mod_php4, mod_rewrite, mod_ssl, mod_keynote, mod_setenvif, mod_so, mod_auth, mod_access, mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, http_core


plik .htaccess wygląda tak:
  1. <?php
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteRule (.+) index.php?zmienna=$1
  5. ?>


czyli wszystko o adresie takim: http://blog.nowiny.pl/aaa/ ma ptrzepisać na takie coś: http://blog.nowiny.pl/index.php?zmienna=aaa

w pliku index.php dałem dla testu:
  1. <?php
  2. var_dump($_GET);
  3. ?>


jak widać, adres nie est przepisywany, a ścieżki w pliku .htaccess są poprawne (próbowałem jeszcze RewriteBase na /public_html/ ale nic z tego)

gdzie może jeszcze tkwić problem?

EDIT ----------------

ok problem rozwiązany...
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.