PDA

Bekijk Volledige Versie : Rewriterule werkt voor de helft



Anbert NL
17/12/07, 23:15
Of ik lees de tutorials die google uitspuugt niet goed of ik snap het
gewoon niet. Via www.mijndomijn.nl/mysite/gebruikersnaam komt de
bezoeker op website .php uit waar "user" de gebruikersnaam bevat. Tot
zover werkt het prima.


RewriteEngine On
RewriteRule ^mysite/(.*)/ leden/website.php?user=$1
RewriteRule ^mysite/(.*) leden/website.php?user=$1

Maar nu wil ik er een tweede variabele aan toevoegen zoals
www.mijndomijn.nl/mysite/gebruikersnaam/123 maar elke keer bevatde
variabele user "gebruikersnaam/123+

RewriteEngine On
RewriteRule ^mysite/(.*)/(.*)/ leden/website.php?user=$1&show=$2
RewriteRule ^mysite/(.*)/(.*) leden/website.php?user=$1&show=$2

Bovenstaande is fout dat weet ik ondertussen. Heb al heel wat geprobeerd
, $1 moet test en getallen kunnen bevatten en $2 numeriek. Iemand die
het mij even wil voorkauwen?

Ronald Klip
19/12/07, 09:55
Op Mon, 17 Dec 2007 23:09:22 +0100 schreef Anbert NL:

> Of ik lees de tutorials die google uitspuugt niet goed of ik snap het
> gewoon niet. Via www.mijndomijn.nl/mysite/gebruikersnaam komt de
> bezoeker op website .php uit waar "user" de gebruikersnaam bevat. Tot
> zover werkt het prima.
>
> RewriteEngine On
> RewriteRule ^mysite/(.*)/ leden/website.php?user=$1
> RewriteRule ^mysite/(.*) leden/website.php?user=$1
>
> Maar nu wil ik er een tweede variabele aan toevoegen zoals
> www.mijndomijn.nl/mysite/gebruikersnaam/123 maar elke keer bevatde
> variabele user "gebruikersnaam/123+
>
> RewriteEngine On
> RewriteRule ^mysite/(.*)/(.*)/ leden/website.php?user=$1&show=$2
> RewriteRule ^mysite/(.*)/(.*) leden/website.php?user=$1&show=$2
>
> Bovenstaande is fout dat weet ik ondertussen. Heb al heel wat geprobeerd
> , $1 moet test en getallen kunnen bevatten en $2 numeriek. Iemand die
> het mij even wil voorkauwen?

mod_rewrite werkt IIRC met greedy regexen. Probeer dus eens een ? na je
wildcards:

RewriteRule ^mysite/(.*?)/(.*?)/ leden/website.php?user=$1&show=$2

--
groet, Ronald

Rik Wasmus
19/12/07, 13:45
On Wed, 19 Dec 2007 09:52:53 +0100, Ronald Klip
<nieuws@contentecontent.invalid> wrote:

> Op Mon, 17 Dec 2007 23:09:22 +0100 schreef Anbert NL:
>
>> Of ik lees de tutorials die google uitspuugt niet goed of ik snap het
>> gewoon niet. Via www.mijndomijn.nl/mysite/gebruikersnaam komt de
>> bezoeker op website .php uit waar "user" de gebruikersnaam bevat. Tot
>> zover werkt het prima.
>>
>> RewriteEngine On
>> RewriteRule ^mysite/(.*)/ leden/website.php?user=$1
>> RewriteRule ^mysite/(.*) leden/website.php?user=$1
>>
>> Maar nu wil ik er een tweede variabele aan toevoegen zoals
>> www.mijndomijn.nl/mysite/gebruikersnaam/123 maar elke keer bevatde
>> variabele user "gebruikersnaam/123+
>>
>> RewriteEngine On
>> RewriteRule ^mysite/(.*)/(.*)/ leden/website.php?user=$1&show=$2
>> RewriteRule ^mysite/(.*)/(.*) leden/website.php?user=$1&show=$2
>>
>> Bovenstaande is fout dat weet ik ondertussen. Heb al heel wat
>> geprobeerd , $1 moet test en getallen kunnen bevatten en $2 numeriek.
>> Iemand die het mij even wil voorkauwen?
>
> mod_rewrite werkt IIRC met greedy regexen. Probeer dus eens een ? na je
> wildcards:
>
> RewriteRule ^mysite/(.*?)/(.*?)/ leden/website.php?user=$1&show=$2

Zou goed kunnen werken. De string bewerkingsfuncties van PHP zijn
natuurlijk een stuk beter dan mod_rewrite, dus in het kader van een
alternatieve aanpak:

---apache rewriteregel----

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mysite/.* /leden/website.php [L,QSA]

--------------------------
---website.php------------
//functie om snel 404 te kunnen sturen en script te eindigen
function _notfound(){header('404 Not Found');exit;}

//controleer het request
$url = $_SERVER['REQUEST_URI'];
if(empty($url)) _notfound();

//verkrijg path uit request
$path = parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
if(empty($path)) _notfound();

//in dit geval, explode op '/'
$requestedpage = explode('/',$path,);

//controleer op aanwezigheid user
if(!isset($requestedpage[1])){
//logica voor niet gegeven username
}

//controleer geldigheid username?

if(!isset($requestedpage[2])){
//logica voor niet gegeven subpagina
}
//controleer geldigheid 2e gedeelte/subpage?
--------------------------

Voordeel is dat je alles wat je wil en de URL kunt zetten, nadeel is dat
je wel de verantwoordelijkheid voor 404's doorgeeft aan PHP ipv Apache,
wat een kleine overhead geeft die je anders niet zou hebben. Voor dit
simpele geval wellicht overkill, maar zodra de boel complexer wordt doet
de flexibiliteit wonderen.
--
Rik Wasmus

Anbert NL
27/12/07, 15:15
Rik Wasmus wrote:
> On Wed, 19 Dec 2007 09:52:53 +0100, Ronald Klip
> <nieuws@contentecontent.invalid> wrote:
>
>> Op Mon, 17 Dec 2007 23:09:22 +0100 schreef Anbert NL:
>>
>>> Of ik lees de tutorials die google uitspuugt niet goed of ik snap het
>>> gewoon niet. Via www.mijndomijn.nl/mysite/gebruikersnaam komt de
>>> bezoeker op website .php uit waar "user" de gebruikersnaam bevat.
>>> Tot zover werkt het prima.
>>>
>>> RewriteEngine On
>>> RewriteRule ^mysite/(.*)/ leden/website.php?user=$1
>>> RewriteRule ^mysite/(.*) leden/website.php?user=$1
>>>
>>> Maar nu wil ik er een tweede variabele aan toevoegen zoals
>>> www.mijndomijn.nl/mysite/gebruikersnaam/123 maar elke keer bevatde
>>> variabele user "gebruikersnaam/123+
>>>
>>> RewriteEngine On
>>> RewriteRule ^mysite/(.*)/(.*)/ leden/website.php?user=$1&show=$2
>>> RewriteRule ^mysite/(.*)/(.*) leden/website.php?user=$1&show=$2
>>>
>>> Bovenstaande is fout dat weet ik ondertussen. Heb al heel wat
>>> geprobeerd , $1 moet test en getallen kunnen bevatten en $2 numeriek.
>>> Iemand die het mij even wil voorkauwen?
>>
>> mod_rewrite werkt IIRC met greedy regexen. Probeer dus eens een ? na
>> je wildcards:
>>
>> RewriteRule ^mysite/(.*?)/(.*?)/ leden/website.php?user=$1&show=$2
>
> Zou goed kunnen werken. De string bewerkingsfuncties van PHP zijn
> natuurlijk een stuk beter dan mod_rewrite, dus in het kader van een
> alternatieve aanpak:
>
> ---apache rewriteregel----
>
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule ^mysite/.* /leden/website.php [L,QSA]
>
> --------------------------
> ---website.php------------
> //functie om snel 404 te kunnen sturen en script te eindigen
> function _notfound(){header('404 Not Found');exit;}
>
> //controleer het request
> $url = $_SERVER['REQUEST_URI'];
> if(empty($url)) _notfound();
>
> //verkrijg path uit request
> $path = parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
> if(empty($path)) _notfound();
>
> //in dit geval, explode op '/'
> $requestedpage = explode('/',$path,);
>
> //controleer op aanwezigheid user
> if(!isset($requestedpage[1])){
> //logica voor niet gegeven username
> }
>
> //controleer geldigheid username?
>
> if(!isset($requestedpage[2])){
> //logica voor niet gegeven subpagina
> }
> //controleer geldigheid 2e gedeelte/subpage?
> --------------------------
>
> Voordeel is dat je alles wat je wil en de URL kunt zetten, nadeel is dat
> je wel de verantwoordelijkheid voor 404's doorgeeft aan PHP ipv Apache,
> wat een kleine overhead geeft die je anders niet zou hebben. Voor dit
> simpele geval wellicht overkill, maar zodra de boel complexer wordt doet
> de flexibiliteit wonderen.
> --Rik Wasmus

Bedankt voor jullie reacties. Ik hoop binnenkort ff te kunnen zitten om
het te proberen maar op 18 december is ons gezin uitgebreid met een
dochter en staat mijn hoofd niet naar programmeren. Oja, foto's op
www.anbert.nl :P

Ronald Klip
28/12/07, 00:45
Op Thu, 27 Dec 2007 15:06:37 +0100 schreef Anbert NL:
> Rik Wasmus wrote:
>> Ronald Klip wrote:
>>> Op Mon, 17 Dec 2007 23:09:22 +0100 schreef Anbert NL:
>>>
>>>> [..] of ik snap het gewoon niet.
>>>
>>> Probeer dus eens [..]
>>>
>> [..] alternatieve aanpak:
>
> Bedankt voor jullie reacties. Ik hoop binnenkort ff te kunnen zitten om
> het te proberen maar op 18 december is ons gezin uitgebreid met een
> dochter en staat mijn hoofd niet naar programmeren. Oja, foto's op
> www.anbert.nl :P

Flauwe smoes, Anbert ;) Gefeliciteerd!

--
groet, Ronald

Anbert NL
01/01/08, 13:55
Ronald Klip wrote:
> Op Thu, 27 Dec 2007 15:06:37 +0100 schreef Anbert NL:
>> Rik Wasmus wrote:
>>> Ronald Klip wrote:
>>>> Op Mon, 17 Dec 2007 23:09:22 +0100 schreef Anbert NL:
>>>>
>>>>> [..] of ik snap het gewoon niet.
>>>>
>>>> Probeer dus eens [..]
>>>>
>>> [..] alternatieve aanpak:
>>
>> Bedankt voor jullie reacties. Ik hoop binnenkort ff te kunnen zitten
>> om het te proberen maar op 18 december is ons gezin uitgebreid met een
>> dochter en staat mijn hoofd niet naar programmeren. Oja, foto's op
>> www.anbert.nl :P
>
> Flauwe smoes, Anbert ;) Gefeliciteerd!
>
> --groet, Ronald

Ik heb ff snel de rewriterule gebruikt. Nu moet de kleine weer een fles
:P Bedankt!