Szép URL-ek rewrite-tal
Sziasztok!
Próbálkozom a szép URL-k használatlával, de sorra elvérzem, remélem ti tudtok segíteni. Van egy teszteléshez használt webszerver localon..
A www mappában levő .htaccess fájlba a következőt írtam:
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /Proba
RewriteRule ^(.*)konyvtar/([^/]+)(/*)$ proba.php?m=2&a1=$2 [L]
Egy adott link így fest:
http://localhost/Proba/proba.php?m=2&a1=4
(A linkek attól függően, hogy melyik tartalmat kérjük le, kiegészülhetnek egy a2 és a3 paraméterrel is.)
1. Problémám / kérdés:
Miután ezt beállítom a htacces-ben 403 forbidden hibát kapok. A httpd.conf fájlban átállítom az Alloverride paramétert Alloverride AuthConfig -ra, de akkor meg kapok egy 500 internal error hibát. Erre beállítom Options +FollowSymLinks paramétert de semmi sem változik. Remélem tudtok segíteni mert a fejem verem már az asztalba..így nehéz h. nem értek túlzottan ehhez....
2. Problémám / kérdés:
Annyi RewriteRule-t kell létrehozzak ahány aloldalam van? Mert nálam az m, a1, a2, a3 paraméterek kerülnek a linkbe, de változó hogy mikor melyiket használom...vagy csak annyi szabály kell ahány lefedi a különböző mélységeket?
Előre is köszi
K
■ Próbálkozom a szép URL-k használatlával, de sorra elvérzem, remélem ti tudtok segíteni. Van egy teszteléshez használt webszerver localon..
A www mappában levő .htaccess fájlba a következőt írtam:
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /Proba
RewriteRule ^(.*)konyvtar/([^/]+)(/*)$ proba.php?m=2&a1=$2 [L]
Egy adott link így fest:
http://localhost/Proba/proba.php?m=2&a1=4
(A linkek attól függően, hogy melyik tartalmat kérjük le, kiegészülhetnek egy a2 és a3 paraméterrel is.)
1. Problémám / kérdés:
Miután ezt beállítom a htacces-ben 403 forbidden hibát kapok. A httpd.conf fájlban átállítom az Alloverride paramétert Alloverride AuthConfig -ra, de akkor meg kapok egy 500 internal error hibát. Erre beállítom Options +FollowSymLinks paramétert de semmi sem változik. Remélem tudtok segíteni mert a fejem verem már az asztalba..így nehéz h. nem értek túlzottan ehhez....
2. Problémám / kérdés:
Annyi RewriteRule-t kell létrehozzak ahány aloldalam van? Mert nálam az m, a1, a2, a3 paraméterek kerülnek a linkbe, de változó hogy mikor melyiket használom...vagy csak annyi szabály kell ahány lefedi a különböző mélységeket?
Előre is köszi
K
Ja
2) annyi szabály kell, amennyi lefedi a rendszered URL halmazát. Jó esetben elég egy is.
teljesítmény
Üdv,
Felhő
várom
#Options +FollowSymLinks
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /Proba
RewriteRule ^(.*)m/(.*)$ valami.php?m=$2 [L]
httpd.conf -ban:
<Directory "/www/">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
A cím amit behívok:
http://localhost/Proba/valami.php?m=6
Ennek ellenére nem csinál semmit. Nincs hibaüzenet sem de nem írja át az URL-t. A szabályt rontom el, vagy valami más gond lehet? ( azt is kipróbáltam hogy a htaccces-be bettettem az Options +FollowSymLinks -t de akkor sem jó.)
Nem tudjátok mi lehet a gond? Merre induljak?
Rendben, várom az ötleted a drupálos megoldásra.
"Jó esetben elég egy is": Ha három külömböző szint van az oldalon:
valami.php?m=1
valami.php?m=1&a=5
valami.php?m=1&a=5&t=4
Akkor három szabállyal le tudom fedni?
Még valami:
ha a htacces-ben átállítom a rewrtiebase-t egy másik mappára, és a szabályt is átállítom átirányításra, akkor is átirányít ha a http://localhost/Proba/ címet próbálom behívni. Pedig itt csak akkor lenne gond ha a Valamimas mappában levő lapot csesztetem, nem? Úgy fest, hogy telejsen mind1 hogy a rewritebase-t használom e vagy sem, mert ha kikommentelem akkor is megcsinálja, csak ha a Proba mappába teszem akkor cask akkor ha a gyökérbe akkor meg az egész localhostra átirányít...
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /Valamimas
RewriteRule (.*) http://www.valamimas.hu/$3 [R=301,L]
mit szeretnél?
http://localhost/Proba/valami.php?m=6
Ennek ellenére nem csinál semmit.
a htaccess-ből én úgy látom, hogy neked a http://localhost/Proba/m/6/ címet kéne beírnod.
a szép url-eknek az a lényege, hogy a böngészőben mindenki http://localhost/Proba/m/6/ címet lát, viszont te a szerver oldalon úgy tudod kezelni, mintha a http://localhost/Proba/valami.php?m=6 címet kérték volna.
ajánlott olvasmány: http://weblabor.hu/cikkek/rovidwebcim
u.i.: máskor szebb címet adj, mert ez a "megint rewrite" nem sokat árul el.
teljes zavar
Vagy most akkor mitishogyan?
Kérdésedre, azt szeretém, hogy ha valaki kattint erre a linkre http://localhost/Proba/valami.php?m=6, akkor ez jelenne meg. http://localhost/Proba/m/6/. Vagy ha ezt akarom akkor ezzel annyit fogok elérni, hogy a cím szépen jelenik meg, de a robotok u.a a paraméterezett linket indexelik mint korábban?
Tehát úgy kellene nekilátni az egésznek, hogy a menüpontokra az url-t már "szép url" -ként deklarálom, és ezeknek a címeknek vagy rewrital, vagy php, vagy errordok..de megfeleltetem az adatbázisban levő címet?
Kösz
K
minden link szép url legyen
igen, de erre az átirányításra is szükséged lesz, mindjárt írom is, hogy miért.
igen, minden létező linknek szép url-nek kell lennie. a te oldaladon lévő belsőknek is és a kívülről jövő linkeknek is. a mod-rewrite csak annyiban segít, hogy ezeket a szép url-eket mind a te programodhoz tudd irányítani (különben 404-es hibát kapnál) és fel is tudd dolgozni.
az előbb említett átirányításra azért lesz szükséged, mert ha valaki úgy érkezik hozzád, hogy http://localhost/Proba/valami.php?m=6, akkor azzal 301-es fejléccel tudatni kell, hogy ez a tartalom a http://localhost/Proba/m/6/ címen érhető el. ha jól sejtem nem kell elmondanom, hogy miért.
egyenlőr tnx.
Egyenlőre köszönöm a segítséget. Itt még sok sok olvasgatás lesz.....
K