Mod_ReWrite
13 naročnikov
13 naročnikov
Imam vprašanje glede mod rewrite ...
prej nisem delal z mod rewrite, sedaj pa sem naredil page, pa dodal mod rewrite, zadeva dela ... poskusno :)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^([a-z0-9]+)/? view.php?a=$1 [L]
ker stvari še nimam na domeni ampak na http://IP/WEBS/domain.com/ ... zato so vse poti nekako tako:
src="PIC/avto1.jpg", tudi v linkih ...
problem nastane oz. je že ... ko imam mod rewrite pa grem recimo na tak link
http://IP/WEBS/domain.com/view.php/test_image.jpg
sicer spremenljivko test_image.jpg dobim v php vendar je stran brez CSS ker je tudi tam pot podana NEKAJ/css.css in ne http://IP/WEBS/domain.com/NEKAJ/css.css ...
no sedaj pa me zanima če se da to kako drugače rešiti ali morem iti pa sprenit vse poti, slike, css, linki ... ? Vse to namreč kaže narobe, namesto od http://IP/WEBS/domain.com/ kaže od http://IP/WEBS/domain.com/view.php/ naprej ..... :S :(
69 odgovorov
Ko odprem /view/slika.jpg/ dobim Not Found, namesto da bi mi odprlo view.php?a=slika.jpg, kar bi rad dosegel.
Poskusi z absolutno potjo /view.php?a=$1
Tole zdaj rahlo ugibam, nisem stoodstotno preprican, da je to problem, nimam pa casa probat... :)
Bah ne gre ... file not found ... je*eš ta rewrite, sej mi je uspelo da sem spravil view.php?a= ... pa spremenljivka iz naslova, pol pa namesto view.php dam index php pa bo zgledalo takole www.domena.com/spremenljivke.... pač morem vse spremeniti pa dati v index.php ker imam več datotek sedaj, ... drugače pa bo potem tako tudi ok, ker naslov bo enak le vso kodo bom moral spremeniti :S.
:) ker sem toliko nesposoben da bi usposobil mod_rewrite kot si ti napisal, sem vse spravil v en file, index.php.
V htaccess pa sem dal tole:
RewriteEngine on
RewriteRule ^(.*)/$ index.php?a=$1 [L]
ta modrewrite mi vse kar je od ...www.domena.com/ - od tukaj najprej, vrne v spremenljivko $GET['a'].
Iz te spremenljivke poberem ven tole:
$input = $_GET['a'];
$url_a = str_replace("'", "", $input);
$url_b = str_replace('"', "", $url_a);
$url_c = str_replace("<", "", $url_b);
$url_d = str_replace(">", "", $url_c);
$output = str_replace("\\", "", $url_d);
$clean_url_a = $output;
če bi mi kdo slučajno želel tlačit v forme ali url kako SQL, kodo ali html, ki bi uničil obliko do takrat ko bi jaz to opazil in pobrisal ...
potem pa imam
www.domena.com/spremenljivka1/spremenljivka2/spremenljivka3...
in ko $_GET['a'] "očistim" z zgornjo kodo, ga razbijem na več delov, ločim s "/"
$url_clean_url_a = explode("/", $clean_url_a);
$url_var1 = $url_clean_url_a[0]; // Url var 1
$url_var2 = $url_clean_url_a[1]; // Url var 2
$url_var3 = $url_clean_url_a[2]; // Url var 3
$url_var4 = $url_clean_url_a[3]; // Url var 4
....
tako dobim www.domena.com/spremenljivka1/spremenljivka2/ ... pa v php $urlvar1 = spremenljivka1, $urlvar2 = spremenljivka1 ... itd. Skratka URL ki ga bo google lepo poindexiral :). Pa potem lahko še kak keyword po želji dodam .../key-word/... kjerkoli v url za domeno ... :), ki ga s PHP lahko tudi spustim če je tam samo za indexiranje in ni koristen pri generiranju strani.
Problem je bil da mi tole ni delovalo:
RewriteRule ^/view/(.*)/$ view.php?a=$1 [L]
nevem zakaj ... sedaj pa sem rešil, tako kot je zgoraj opisano ... hvala za pomoč ;).
No, sem že kar precej pregledal tale Mod_Rewrite pa mi kar ne deluje.
Kako bi vi naredili da bi namesto
http://stran/?page=verses&category=ljubezenski
pisalo
http://stran/verzi/ljubezenski-verzi
Lp
Tocno tole bi naredil na tak nacin:
RewriteRule ^/verzi/ljubezenski-verzi/$ /?page=verses&category=ljubezenski [L]
Ampak to je rahlo butasto, imel bos neskoncno mnogo vrstic z RewriteRule...
Najboljse bi bilo nekako takole:
RewriteRule ^/([^/]+)/([^/]+)/$ /?page=$1&category=$2 [L]
Pa ti bo delalo za vse, ampak v tem primeru bo pravilen URI takle: /verses/ljubezenski/
Hm, ne vem zakaj mi noče delat, izgleda da je nekaj drugega narobe.
Sedaj imam takole:
Options +Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^/verzi/ljubezenski-verzi/$ /?page=verses&category=ljubezenski [L]
Pa kliknem na povezavo
http://stran/?page=verses&category=ljubezenski
pa se nič ne spremeni.
Se vam kaj svita kaj bi bilo?