[PHP] Goede mod_rewrite of router ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben wat aan het klussen met PHP en wil subdomeinen gebruiken voor usernames. Dit is best te doen eigenlijk via een simpele mod_rewrite en een wildcard in je DNS-zone.

De rewrite rule kan zijn als volgt:

code:
1
2
3
4
5
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^.*$ profile.php?user=%1 [QSA,L]


Dit werkt prima alleen wil je dit natuurlijk uitbreiden.

Stel iemand heeft een blog en de URL is normaal gesproken:

http://www.domain.com/blog.php?user=<NAME>

Dan zou ik bijna zeggen dat je een rewrite kunt maken welke dit doet ongeveer:

code:
1
RewriteRule ^(.*)/$ blog.php?user=%1 [QSA,L]


Even in grote lijnen want ik weet dat deze rewrite niet goed is, moet ik nog nader uitzoeken.

De vraag is eigenlijk of je wel een %1 kan hergebruiken en je dit niet beter op kunt lossen door het subdomein uit de URL te halen en deze te te gebruiken in je script... soort van "router" die voor meerdere php's te gebruiken valt dus.

De vraag is wel of dat met niet ingelogde mensen die een user bezoeken wel handig is.. omdat je dus altijd je "userwaarde" uit de URL haalt.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
RewriteRules horen in Serversoftware en Windows Servers ( Zie Waar hoort mijn topic? )

PRG -> WSS

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tja was even in twijfel... ook stukje PHP namelijk :) dank je.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik snap niet helemaal wat je bedoelt. Hoe wil je dat de url er dan uit gaat zien? USER.domein.nl/blog o.i.d.? Ben je niet op zoek naar multiviews? Zie bv. [PHP] Multiviews

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Noork schreef op dinsdag 28 juli 2009 @ 19:04:
Ik snap niet helemaal wat je bedoelt. Hoe wil je dat de url er dan uit gaat zien? USER.domein.nl/blog o.i.d.? Ben je niet op zoek naar multiviews? Zie bv. [PHP] Multiviews
Ik zit met het probleem dat ik een pagina omzet naar een subdomein en in dat "subdomein" dan weer een pagina die ik aanroep met een andere mod_rewrite wil herschrijven tot een SEO.

Dat laatste gaat lastig denk ik in combinatie met de eerste subdomein rewrite.

Acties:
  • 0 Henk 'm!

Verwijderd

Kap gewoon met dat hele mod_rewrite gedoe. Pak een enkele rule die gewoon alles wat matcht rewrite naar een enkel script dat als entry point dient voor alle functionaliteit. Vandaar dispatch je naar het onderdeel wat wordt opgevraagd.

Je maakt een of ander Request object waaruit je alles kunt halen en dat je als argument kunt doorgeven aan een controller, handler of hoe je het ook wilt noemen. Of die laatsten nou naar de HTTP_HOST header kijken of naar de REQUEST_URI, of naar een component ervan, dat zoeken die handlers zelf maar uit. Bij het aanroepen geef je een bepaalde context mee en daar moeten ze het maar mee doen.

Heel de begrippen "username", "blog" en "SEO" zijn op dit niveau echt nog niet boeiend.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik heb hier even zitten testen. En je kan prima een subdomain en querystring tegelijk rewriten met htaccess.
user.localhost/blog wordt hier prima gerewrited naar multiview.php?user=user&page=blog.

Verder idd met bovenstaand. 1 enkele rule is eenvoudiger en hierdoor ook veel makkelijker te beheren. Ik zou zelf eerder iets gebruiken als domain.nl/blog/user of domain.nl/profile/user.

Maar goed hier een (waarschijnlijk brakke want ik weet er te weinig van-) oplossing:
code:
1
2
3
4
5
RewriteCond %{HTTP_HOST} ^[^.]+\.localhost$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule   ^(.+) %{HTTP_HOST}$1          [C]
RewriteRule   ^([^.]+)\.localhost(.*) multiview.php?user=$1&page=$2


edit: waarschijnlijk moet je www nog even excluden in bovenstaande code.

[ Voor 4% gewijzigd door Noork op 28-07-2009 20:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De www moet zeker even geexclude worden inderdaad.

Ik moet dus gewoon een mutiview pagina maken waar ik eigenlijk de "functies" aan ga roepen aan de hand van mijn URL met de vars erin. De functies kunnen in aparte files staan dan, net wat overzichtelijk is denk ik.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het begint erop te lijken dat een eigen framework, wat je met een "router" en een singleton opzich maakt, een must is.

Ik ben al geruim een week frameworks aan het bekijken en testen en kom er steeds op uit dat je eigenlijk weer een nieuwe "taal" moet gaan leren en hier weinig tot niets meer opschiet en zelf schrijven dus meer duidelijkheid moet geven.

Tevens vind ik de docs welke er zijn niet echt vreselijk goed. Iedereen schrijft een framework op zijn eigen manier, wel met dezelfde gedachte, maar het wordt er niet overzichtelijker van omdat documentatie op blogs en dergelijke geen standaard vasthouden.

Opzich leuk dat het overgewaaid is vanuit Rails, het echter beter gewoon als "standaard" gemaakt kunnen worden met echt goede degelijke docs :)

edit:


Ik ben er overigens niet helemaal van overtuigd dat wat er beschikbaar nu echt zo overzichtelijk is in programmeren, wat het wel claimt te doen.

[ Voor 9% gewijzigd door Verwijderd op 30-07-2009 22:22 ]


Acties:
  • 0 Henk 'm!

  • J3roen
  • Registratie: Januari 2000
  • Niet online

J3roen

Intentionally left blank

Een erg goed gedocumenteerd framework is eventueel Codeigniter. Erg fijn om mee te werken, en gemakkelijk te uitbreiden.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik kan eigenlijk geen een framework bedenken waarbij de aanpak zoals in Verwijderd in "[PHP] Goede mod_rewrite of router ?" niet kan gaan werken...

Je opent dagelijks topics over allerlei details terwijl je een aantal grote lijnen nog niet duidelijk hebt. Hak eens een knoop door, kies eens een framework of bouw je eigen spul. Nu lijk je (imo) enkel maar wat te treuzelen en zodra je ook maar een vraag tegenkomt is alles meteen stom, saai en slecht gedocumenteerd. ;)
Verwijderd schreef op donderdag 30 juli 2009 @ 22:18:
Opzich leuk dat het overgewaaid is vanuit Rails, het echter beter gewoon als "standaard" gemaakt kunnen worden met echt goede degelijke docs :)
Rails heeft er echt 0,0 mee te maken. En waarom moet het nou ín PHP zitten? Je download een goed ondersteund framework en klaar ben je. Installatie of ondersteuning is echt het probleem niet.
Ik ben er overigens niet helemaal van overtuigd dat wat er beschikbaar nu echt zo overzichtelijk is in programmeren, wat het wel claimt te doen.
Jij hebt het overzicht zelf nog niet. ;) B)
En let op: dat hoeft helemaal niet erg te zijn, zolang je zelf maar niet de verwachting hebt dat elke regel code die je schrijft al aan De Ultieme Perfectie grenst. Misschien moet je gewoon nog het eea leren. :) Wellicht heeft iedereen continu wel wat te leren. B)
J3roen schreef op donderdag 30 juli 2009 @ 22:30:
Een erg goed gedocumenteerd framework is eventueel Codeigniter. Erg fijn om mee te werken, en gemakkelijk te uitbreiden.
Is een vd bekendere ja. Maar laten we hier niet een 'roep je favo framework'-topic van maken, die zijn er zat. En met een beetje geluk zelfs nog met iets dat op een onderbouwing lijkt. :P

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voutloos schreef op donderdag 30 juli 2009 @ 22:35:
Ik kan eigenlijk geen een framework bedenken waarbij de aanpak zoals in Verwijderd in "[PHP] Goede mod_rewrite of router ?" niet kan gaan werken...

Je opent dagelijks topics over allerlei details terwijl je een aantal grote lijnen nog niet duidelijk hebt. Hak eens een knoop door, kies eens een framework of bouw je eigen spul. Nu lijk je (imo) enkel maar wat te treuzelen en zodra je ook maar een vraag tegenkomt is alles meteen stom, saai en slecht gedocumenteerd. ;)
Beter goed uitgezocht dan niet. Heb je wel eens vrijwel alle topic en blogs over frameworks gelezen ? Met dat als wetenschap van mezelf kan ik je enerlaatste quote vrij makkelijk afmaaien... want dit is dus niet waar !
[...]
Rails heeft er echt 0,0 mee te maken. En waarom moet het nou ín PHP zitten? Je download een goed ondersteund framework en klaar ben je. Installatie of ondersteuning is echt het probleem niet.
Ik zou zeggen, lees zelf eens wat docs... het komt zeker vanuit Rails... het wordt daar namelijk altijd al gebruikt en PHP niet. Een veel gebruikte qoute is "PHP is (not) a framework", dit omdat het onduidelijk is wat de beste manier is... tuurlijk alles heeft zijn pro's en cons.
Jij hebt het overzicht zelf nog niet. ;) B)
En let op: dat hoeft helemaal niet erg te zijn, zolang je zelf maar niet de verwachting hebt dat elke regel code die je schrijft al aan De Ultieme Perfectie grenst. Misschien moet je gewoon nog het eea leren. :) Wellicht heeft iedereen continu wel wat te leren. B)
Ik wil er juist van leren, vandaar dat ik dit zo ver mogelijk uitzoek. Mijn inziens is dat slim dan "gewoon" de knoop eens door te hakken en er later achter te komen dat je framework niet geschikt is voor je doel.
[...]
Is een vd bekendere ja. Maar laten we hier niet een 'roep je favo framework'-topic van maken, die zijn er zat. En met een beetje geluk zelfs nog met iets dat op een onderbouwing lijkt. :P
Bekendere betekent niet de beste... deze heeft namelijk zeker wat con's.... en dat is de issue en weerhoudt mij er niet van er zelf een te schrijven die je van voor tot achter kent in plaats van moet gaan ontdekken !

Acties:
  • 0 Henk 'm!

Verwijderd

Voutloos heeft gewoon gelijk hoor.
Beter goed uitgezocht dan niet. Heb je wel eens vrijwel alle topic en blogs over frameworks gelezen ? Met dat als wetenschap van mezelf kan ik je enerlaatste quote vrij makkelijk afmaaien... want dit is dus niet waar!
Jij gaat nu aan anderen vertellen dat je beter iets hebt uitgezocht dan niet? Wat versta jij onder uitzoeken dan? Topics openen in PRG?
Ik zou zeggen, lees zelf eens wat docs... het komt zeker vanuit Rails... het wordt daar namelijk altijd al gebruikt en PHP niet. Een veel gebruikte qoute is "PHP is (not) a framework", dit omdat het onduidelijk is wat de beste manier is... tuurlijk alles heeft zijn pro's en cons.
Je vergelijkt Rails met PHP. Je moet Ruby met PHP vergelijken, en Rails met een PHP framework. Symfony is bijvoorbeeld goed bruikbaar. Zend Framework is bruikbaar. Je hoeft ze niet allemaal te kennen om er een te kunnen gebruiken, sterker nog, het is beter om je gewoon bezig te houden met je doel in plaats van met een framework. Waarom zou je de klassieke fout willen maken?
Ik wil er juist van leren, vandaar dat ik dit zo ver mogelijk uitzoek. Mijn inziens is dat slim dan "gewoon" de knoop eens door te hakken en er later achter te komen dat je framework niet geschikt is voor je doel.
Je wilt ervan leren. Als ik van alles wat ik wil leren en heb geleerd een topic open, zou het ook niet meer leuk zijn. Ik begrijp alleen niet wat je wilt leren. Dat het gebruik van een framework wel/niet moeilijk is? Dat jij je doel er wel/niet mee bereikt? Wat je nu in elk geval van ons kunt leren is dat je eigenwijs bent en dat je je teveel bezighoudt met dingen die niets opleveren. Om dan te denken dat je een framework kunt bouwen dat je helpt bij het eenvoudig bereiken van je doel is naïef. Juist als je bezig bent met je framework verlies je blijkbaar het doel uit het oog, want je richt je op details die eigenlijk weinig uitmaken.
Bekendere betekent niet de beste... deze heeft namelijk zeker wat con's.... en dat is de issue en weerhoudt mij er niet van er zelf een te schrijven die je van voor tot achter kent in plaats van moet gaan ontdekken!
Leuk voor je, maar je bent helemaal niet in staat een beter framework te schrijven dan er nu bestaat, en je bent ook niet in staat om te bepalen wat wel werkt en wat niet. Je lijkt Reveller wel, al het denkwerk aan anderen voorleggen, uit de gegeven mogelijke oplossing een willekeurige brakke oplossing kiezen, en dan ben je hier over 4 dagen weer met een andere issue.

Ik kan me niet herinneren dat ik in PRG ooit een reactie van je heb gezien waar iemand anders iets mee opschoot. Het zou mij zeer verbazen als je een framework kunt schrijven waar iemand anders iets aan heeft. Het bord voor je kop is van hoogwaardig tropisch hardhout. Stop met je "ik weet het beter" mentaliteit. Daar mag je mee komen als je je sporen hebt verdiend. Het is al treurig genoeg als je zo'n enorme reality check nodig hebt. En dan nog betwijfel ik dat het tot je doordringt.



Oh, en als je je af gaat vragen wat wij dan in godsnaam nog op dit forum doen: ja dat vragen wij ons ook weleens af. Maar bijvoorbeeld dit, dit, dit, dit, dit, dit, dit, dit, dit en dit posten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het lijkt me duidelijk dat mensen hier zelf het vaak beter willen weten. Opzich geen probleem natuurlijk... echter als je niet direct in wil gaan op vragen die iemand heeft omdat hij iets uit wil zoeken voor zichzelf en het afkapt door "zo vind ik dat het moet zijn" reacties vraag ik me af wat je bijdrage hier zelf dan in is.

Dit is een van de redenen waarom ik in PRG zelf weinig ideeën aanlever en ik weet vrij zeker dat andere mensen dat ook minder doen om dit feit. Je krijg eerder een "zo moet het, dus l*l niet zo dom" dan... opzich goed bekeken, maar die is de handigere manier ivm... item X, Y en Z.

De insteek is zeer bepalend. Mijn insteek is een manier te vinden waar ik veel blogs/forums/artikelen over gelezen heb met die frameworks "Why reinvent the wheel ? Because you can !".

Ik kan de rest van dergelijke replies bij voorbaat al bedenken al er vanuit gegaan wordt dat er volgens de TS niet meer bestaat dan dit forum zoals je zelf aangeeft en ik (en ook vaak meedere mensen) toch echt (zoals ook door mij aangeven) zeer veel aan het testen en lezen geweest ben.

Je zet een trend hier die het er niet "vriendelijker" op maakt, laat staan als je dan mod bent/was.

Even voor alle duidelijkheid; dit is geen flame, er valt gewoon niet op dergelijke posts te reageren omdat er een verkeerde ondertoon in zit.

[ Voor 3% gewijzigd door Verwijderd op 30-07-2009 23:51 ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Ondanks dat htaccess vragen inderdaad beter in SWS passen; mag dit topic, wat vrij weinig met server-configuratie te maken heeft, maar eerder een theoretische PHP discussie is, toch weer terug naar PRG :)

SWS > PRG

Verwijderd schreef op dinsdag 28 juli 2009 @ 18:40:
[...]

De vraag is eigenlijk of je wel een %1 kan hergebruiken en je dit niet beter op kunt lossen door het subdomein uit de URL te halen en deze te te gebruiken in je script... soort van "router" die voor meerdere php's te gebruiken valt dus.

De vraag is wel of dat met niet ingelogde mensen die een user bezoeken wel handig is.. omdat je dus altijd je "userwaarde" uit de URL haalt.
Aangezien het vrij weinig uithaalt of je een RewriteRule, of een regel PHP gebruikt vraag ik me af wat je precies met dit topic wil bereiken? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:31

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op donderdag 30 juli 2009 @ 23:49:
[...]


Het lijkt me duidelijk dat mensen hier zelf het vaak beter willen weten. Opzich geen probleem natuurlijk... echter als je niet direct in wil gaan op vragen die iemand heeft omdat hij iets uit wil zoeken voor zichzelf en het afkapt door "zo vind ik dat het moet zijn" reacties vraag ik me af wat je bijdrage hier zelf dan in is.

Dit is een van de redenen waarom ik in PRG zelf weinig ideeën aanlever en ik weet vrij zeker dat andere mensen dat ook minder doen om dit feit. Je krijg eerder een "zo moet het, dus l*l niet zo dom" dan... opzich goed bekeken, maar die is de handigere manier ivm... item X, Y en Z.
Ho even. Cheatah probeert jou juist te helpen met zijn oplossing. En hoe je het nu ook bekijkt, in dit geval lijkt het er wel degelijk op dat hij gelijk heeft. Met alles rewrites naar 1 scripts en vanaf daar bepalen hoe en wat geeft je meer flexibiliteit en betere leesbaarheid dan tig rewriterules.
De insteek is zeer bepalend. Mijn insteek is een manier te vinden waar ik veel blogs/forums/artikelen over gelezen heb met die frameworks "Why reinvent the wheel ? Because you can !".
Reinvent the wheel is niet erg, zeker niet als het om een leer traject gaat. Echter ben ik het wel met anderen eens dat je nogal snel hier een post doet omdat je wat onzeker lijkt te zijn. Je geeft aan te willen leren. Prima. Van fouten leer je! Wees dus niet bang om een keer een fout te maken of later wat om te moeten aanpassen. Inzicht krijg je echt niet alleen door maar vragen te blijven stellen en maar blijven uitstellen met het een keer daadwerkelijk zelf wat te bedenken en te maken.
Ik kan de rest van dergelijke replies bij voorbaat al bedenken al er vanuit gegaan wordt dat er volgens de TS niet meer bestaat dan dit forum zoals je zelf aangeeft en ik (en ook vaak meedere mensen) toch echt (zoals ook door mij aangeven) zeer veel aan het testen en lezen geweest ben.

Je zet een trend hier die het er niet "vriendelijker" op maakt, laat staan als je dan mod bent/was.

Even voor alle duidelijkheid; dit is geen flame, er valt gewoon niet op dergelijke posts te reageren omdat er een verkeerde ondertoon in zit.
Je zegt wel veel uitgezocht te hebben e.d. maar dat is uit je topicstarts niet altijd te halen. Daarvoor bevatten ze vaak te weinig informatie. Lijkt me niet zo vreemd dat er dan wel eens aan wordt getwijfeld toch? Daarnaast vergelijk je nu Rails met PHP. Rails is een framework geschreven in Ruby. PHP moet je vergelijken met Ruby wat dat betreft, dus Rails met een in PHP geschreven framework.

Vriendelijk, ondertoon.. ik denk dat je je een klein beetje aangevallen voelt maar dat is in dit geval echt niet nodig. Cheatah probeert jou hier te helpen en heeft wat meer ervaring met dit soort zaken dan jij. Dat is niet erg en jij kan doen en laten met zijn advies wat je wilt. Goed, ontopic maar weer :)

[ Voor 7% gewijzigd door Creepy op 31-07-2009 12:45 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als cheetah mij probeert te helpen kan hij direct al doen door beter te (leren) lezen dat ik er toch wel uit ben dat een framework met singleton en dus een enkele RewriteRule toch wel een must is:

Verwijderd in "[PHP] Goede mod_rewrite of router ?"

Ik ben niet bang om van fouten te leren. Ik krijg eerder sterk het idee dat mensen welke zichzelf blijkbaar al de guru durven te noemen bang zijn dat ze een verkeerd antwoord geven en dus de deur dicht slaan door "mijn way is wet" reacties te gaan plaatsen.

Wat me opvalt is dat hij in een ander topic iemand vrolijk met mysql_* en escapes laat werken terwijl nu overstappen op PDO toch echt wel een hele vooruitgang is. Je kunt dan stellen dat hij antwoord geeft op de vraag van de TS, echter betekent dat niet dat hij de persoon er ook daadwerkelijk mee geholpen heeft future wise.

Dat is wat ik met dit topic wilde bereiken, uitzoeken of je gewoon beter from scratch kan beginnen en uit moet gaan van een singleton oplossing en er lekker van kunt leren.

Ik kan je verzekeren dat ik daar voor gegaan ben, of hij nu denkt dat je zelf geen beter framework kan schrijven dan dat er al is... lijkt me echt situatie afhankelijk... dus laat mij het wiel maa uitvinden, graag zelfs !
Pagina: 1