Autor | Zpráva | ||
---|---|---|---|
Neas Profil |
#1 · Zasláno: 24. 6. 2011, 17:51:01
Ahoj,
mám nějakou složku (řekněme například www.example.cz/ahoj/) a chtěl bych docílit toho, aby když do prohlížeče napíši www.example.cz/ahoj/cokoli/ , aby se mi vždy načetl soubor index.php a slovo cokoli, aby se do něj odeslalo jako get proměnná (s možností načítat další get proměnné, například www.example.cz/ahoj/cokoli/&id=1) hádám, že řešení mého problému skýtá soubor .htaccess, avšak kromě načítání chybových hlášek, šel tenhle soubor vždy trošku mimo mě. Děkuji za pomoc |
||
Kacko Profil |
#2 · Zasláno: 24. 6. 2011, 18:54:14
|
||
Neas Profil |
#3 · Zasláno: 24. 6. 2011, 20:14:09 · Upravil/a: Neas
přesně to, co hledám.
Děkuji :) |
||
Neas Profil |
#4 · Zasláno: 25. 6. 2011, 16:00:32 · Upravil/a: Neas
tak jsem si článek přečetl a zkoušel jsem některé uvedené příklady. Stránka se sice přesměruje, ale GET proměnné se nepředají:
.htaccess: Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteRule ^articles/([0-9]+)$ articles.php?id=$1 articles.php: <?php echo isset($_GET['id']) ? $_GET['id'] : 'undefined'; echo '<br>přesměrováno'; ?> URL řádka: http://www.domain.cz/articles/2 |
||
Davex Profil |
#5 · Zasláno: 25. 6. 2011, 16:27:02 · Upravil/a: Davex
Pokud jsou soubory .htaccess a articles.php v kořenovém adresáři webu, tak mi připadá podivné, že by se parametr
id nepředal. Nekazí to nějaká další pravidla?
Nebo se to rozbije tím, že má cesta stejný název jako skript a je zapnuté MultiViews, takže k přepisu nedojde a volá se přímo skript /articles.php/2 . Zkus vypnout Options -MultiViews .
|
||
Neas Profil |
#6 · Zasláno: 25. 6. 2011, 17:08:39 · Upravil/a: Neas
zkusil jsem ještě po přečtení článku z intervalu jinou variantu .htaccess, která již funguje:
Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteRule ^(.*)/$ %{DOCUMENT_ROOT}/articles.php?id=$1 [L,QSA] avšak nefunguje, když vynechám lomítko: RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/articles.php?id=$1 [L,QSA] píše mi error 500. nevíte někdo, proč? (nejspíš to chce jen úpravu regulárního výrazu, jen nevím, jakou) EDIT: po vypnutí MultiViews také chyba 500 EDIT2: tak jsem problém nakonec vyřešil: RewriteEngine On RewriteRule ^([a-zA-Z0-9\_\~\!\*\'\|\%\:\+\-]{1,255})/?$ %{DOCUMENT_ROOT}/blogs.php?blog=$1 [L,QSA] |
||
Davex Profil |
#7 · Zasláno: 27. 6. 2011, 13:39:15
Neas:
> píše mi error 500. > nevíte někdo, proč? Zacyklilo se to. Nový regulární výraz neobsahuje v cestě tečku, a proto se už přepsané URL blogs.php znovu nepřepisuje. Běžně by se to řešilo podmíněným testem, aby se nepřepisovalo URL vedoucí k existujícímu souboru RewriteCond %{REQUEST_FILENAME} !-f nebo nepřepisovala již přepsaná adresa RewriteCond %{ENV:REDIRECT_STATUS} ="" .
|
||
Časová prodleva: 13 let
|
0