ugrás a tartalomhoz

Szép URL-ek rewrite-tal

Vrt · 2008. Jún. 4. (Sze), 13.54
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
 
1

Ja

tolmi · 2008. Jún. 5. (Cs), 08.55
1) Először próbáld meg AllowOverride All-lal és ha úgy megy, akkor szűkítsd le.
2) annyi szabály kell, amennyi lefedi a rendszered URL halmazát. Jó esetben elég egy is.
2

teljesítmény

Hodicska Gergely · 2008. Jún. 5. (Cs), 10.58
annyi szabály kell, amennyi lefedi a rendszered URL halmazát. Jó esetben elég egy is
Ezt még annyival egészíteném ki, hogy elvileg a mod_rewrite tud lassúcsak lenni, ha túl sok szabály van benne, illetve nekiáll az ember regexp részt is kihasználni benne, ezért célszerű a Drupal szerű megoldást használni: csak azt ellenőrzöd, hogy nem létző fájl, könyvtár és ebben az esetben egy PHP-nak dobod a feldolgozást. A kérés routolását már ez a PHP fogja megoldani. Majd nemsokára fogok postolni egy lehetséges megoldást erre.


Üdv,
Felhő
3

várom

Vrt · 2008. Jún. 5. (Cs), 13.09
.htacces -ben:

#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]
4

mit szeretnél?

gex · 2008. Jún. 5. (Cs), 14.59
A cím amit behívok:
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.
5

teljes zavar

Vrt · 2008. Jún. 5. (Cs), 15.54
Megmondom őszintén, hogy már azt sem tudom merre hány méter. Teljesen abban a hiszemben voltam, hogy ha ezt megírom így, akkor a meglevő oldalamon szereplő url-t átírja?! Ezek szerint az összes linket át kell dolgozzam a megfelelő struktúrára?

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
6

minden link szép url legyen

gex · 2008. Jún. 5. (Cs), 16.29
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?

igen, de erre az átirányításra is szükséged lesz, mindjárt írom is, hogy miért.

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

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.
7

egyenlőr tnx.

Vrt · 2008. Jún. 6. (P), 09.17
Gex!

Egyenlőre köszönöm a segítséget. Itt még sok sok olvasgatás lesz.....

K