Sziasztok!
Mar joideje hasznalom az apache2 mod_rewrite modulja't arra, hogy szep baratsagos url-eken keresztul lehessen honlapokat csinalni (sajnos a webszerverek me'g mindig azt hiszik hogy egyedi file-okat kell kiszolgalni). Szoval, egyszeru" a dolog:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !/static/.*
RewriteRule ^(.*)$ index.php?query=$1 [L,QSA]
</IfModule>
Es akkor a honlapnak (a /static kivetelevel) egy belepesi pontja van, az index.php, amiben pedig van egy ilyen (tobbek kozott):
$argv=explode("/",$_GET["query"]);
$argc=count($argv);
if ( $argv[$argc-1]=="" )
{ unset($argv[$argc-1]);
$argc--;
}
Es akkor igy a felhasznalo altal beirt "http://honl.ap/abc/xyz/123" cimet azt $argc==3, $argv[0]=="abc", $argv[1]=="xyz" es $argv[2]=="123" tagokkal lehet elerni.
Egy gond van ezzel, hogyha vmelyik argumentum az eszke'pelt. konkretan, duplan probalja feloldani. Ha azt mondom, hogy nezzuk meg a http://honl.ap/test/abc%2B123-at, akkor abbol az apacs elso kozelitesben ugye "abc+123"-at csinalna (amit ugye jelent a fenti cim), viszont az $argv[] tombben ma'r "abc 123" jelenik meg. Ez meg ma'r egy kicsit sok a jobol. Ha a parameterek $_GET[]-tel mennek a't, pl http://honl.ap/vala/mi?ize=abc%2B123, akkor itt a $_GET["ize"] erteke az jo lesz, konkretan "abc+123", es nem szokozos. De a mod_rewrite-on keresztul masszivan atfuttatott reszeken ke'tszer oldja fel az urlencode()-n atesett dolgokat.
Persze csinalhatnam hogy a szerver a belso linkekekt urlencode(urlencode(...)) modon generalja le, de azert az megiscsak tu'l snassz lenne...
Vki latott ilyet? Nehany rtfm/google alapjan vegigneztem a megprobaltam a RewriteRule majd' osszes felteteles kapcsoljat (mint az L es a QSA, feljebb), de semmi, pedig elso"re (az rtfm alapjan) volt egy-ket biztato... Ami akar az is lehetne hogy "ne csinald meg 2x ugyanazt, lecci".
thx, A.
Hozzászólások
QSA sztem nem kell,
--
de kell; marmint anelkul nem megy a fenti se'ma...
up?
allowencodedslashes?
Valami hasonlo problema miatt kellett regebben.
hm, de ez csak a / jelekre van kihegyezve...
Valoban, elneztem. Az csak a queryparamban levo / miatt kellett, a teljes URL a server[request_uri]-bol volt kiszedve.
Rakerestem ujra hatha talalok valami tisztabb megoldast a regi helyett... http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_b (innen: http://drupal.org/node/284899 )
Meg nem probaltam ki, hatha segit.
koszonom, igen, ez volt az. most mar mukodik. igy a flag-ek most: [L,QSA,B]