Htaccess Rewriterule probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • iznogood
  • Registratie: September 2001
  • Niet online
Ik ben op dit moment een url rewrite aan het maken waarvan alleen de 1e variabele (pag) zeker is en de rest mogelijk weggelaten kunnen worden.

De url moet zowel op een / als op niets kunnen eindigen:
/catagorieen/fietsen/
/catagorieen/fietsen

De variabelen in de url moeten zowel _ als - als tekst en cijfers kunnen bevatten.

Ik heb al meerdere manuals doorgespit en gezocht, maar ik krijg het niet voor elkaar om een dergelijke dynamische rewrite te bouwen. Mijn eigen code lijkt me erg inefficient.

code:
1
2
3
4
5
6
7
8
9
RewriteEngine on
Options +FollowSymlinks
RewriteRule ^([^/\.]+)/ index.php?pag=$1 [L]
RewriteRule ^([^/\.]+)/?$ index.php?pag=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/ index.php?pag=$1&var1=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?pag=$1&var1=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/ index.php?pag=$1&var1=$2&var2=$3 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?pag=$1&var1=$2&var2=$3 [L]
enz..


Wie heeft een efficiente oplossing voor mijn probleem?

Just as Good


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 23:06

MueR

Admin Tweakers Discord

is niet lief

Alles rewriten naar index.php en het in PHP afhandelen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • iznogood
  • Registratie: September 2001
  • Niet online
MueR schreef op zondag 28 februari 2010 @ 16:26:
Alles rewriten naar index.php en het in PHP afhandelen.
Waarom niet mbv htaccess?

Just as Good


Acties:
  • 0 Henk 'm!

  • Leftblank
  • Registratie: Juni 2004
  • Laatst online: 23:21
Htaccess is niet flexibel, relatief complex. Zoals je zelf al postte zit je - op deze manier - snel met een hele rits aan regels als je alle gevallen wilt afvangen, terwijl je uiteindelijk toch nog alles bij index.php neerplempt.

Acties:
  • 0 Henk 'm!

  • iznogood
  • Registratie: September 2001
  • Niet online
Leftblank schreef op zondag 28 februari 2010 @ 17:18:
[...]

Htaccess is niet flexibel, relatief complex. Zoals je zelf al postte zit je - op deze manier - snel met een hele rits aan regels als je alle gevallen wilt afvangen, terwijl je uiteindelijk toch nog alles bij index.php neerplempt.
Ok, thanks, ga ik dat proberen ;)

Just as Good


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ff een klein puntje, staat zo slordig als je dit door je hele site fout zou doen ;)

catagorieen -> categorieen

Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Doe dan direct categorieën :> . Overigens is php inderdaad veel handiger, je kan er veel complexere code maken en het blijft (mijns inziens) veel overzichtelijker.

EDIT: Bij nader inziens is categorieën waarschijnlijk geen goed idee, omdat dat in de url niet goed zal werken. Kies dan gewoon voor categorie.

[ Voor 32% gewijzigd door Aloys op 28-02-2010 20:59 ]


Acties:
  • 0 Henk 'm!

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
iznogood schreef op zondag 28 februari 2010 @ 14:00:
De url moet zowel op een / als op niets kunnen eindigen:
/catagorieen/fietsen/
/catagorieen/fietsen
Voor de laatste zou ik in ieder geval een redirect naar de URL met afsluitende / genereren. Dit om te voorkomen dat dezelfde content onder 2 verschillende URL's beschikbaar is. Dit kan namelijk ten koste gaan van je Google ranking, omdat inkomende links alleen meetellen voor de URL waarnaar gelinkt wordt. Je wil je inkomende links dus niet verdelen over 2 verschillende URL's.

Normaal gesproken (als /categorieen/fietsen/ een normale map zou zijn) genereert de webserver die redirect, maar als je gebruik maakt van een rewrite naar index.php moet je het zelf doen.

Met een rewriterule los je het zo op:
code:
1
2
RewriteEngine On
RewriteRule   ^(.*[^/])$ $1/ [R=301,L]
Let op: deze rewriterule matched alle URL's die niet met een / teken eindigen.
Je moet dus wel een uitzondering toevoegen voor mappen met bijv. afbeeldingen. Maar dat geldt ook voor de rewrite naar index.php.

Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Ik wil in dit topic ook even promotie maken voor %{QUERY_STRING}

Voor www.bla.foo/123/blabla.ht...=var&foo=foo&andere=zever

code:
1
RewriteRule ^([0-9]+)/(.*)\.html(.*)$ index.php?pag=$1&%{QUERY_STRING} [NC,L]

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 23:06

MueR

Admin Tweakers Discord

is niet lief

Waarom zou je moeilijk gaan lopen doen met allerlei argumenten? Die R=301 uit de post van Arjen Tempel wil je in ieder geval zeker niet doen. Dit werkt ook uitstekend:
code:
1
2
3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 23:06

MueR

Admin Tweakers Discord

is niet lief

Op verzoek schopje over de schutting richting WSS

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1