Toon posts:

htaccess url rewriting

Pagina: 1
Acties:

Verwijderd

Topicstarter
1. ik heb al wat zoekwerk verricht en guides doorlopen. Hier het resultaat:
- http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
- http://www.sitepoint.com/article/guide-url-rewriting
- http://www.yourhtmlsource.com/sitemanagement/urlrewriting.html

In die laatste guide hebben ze het over genummerde categoriën. Dat snap ik dus allemaal wel.
Maar nu heb ik op mijn eigen website categoriën als ACC, BED, CAS en andere 3-letterige cat's.
een url ziet er bij mijn website zo uit:
code:
1
http://localhost/forcom/index.php?cat1=ACC&cat2=BAT
ACC staat in mijn mysql bijvoorbeeld voor "Accessoires - Kabels"
BAT is een subcategorie van ACC en staat bijvoorbeeld voor "Batteries"

In het voorbeeld van bovenaan (link) kan je dus zoiets:
code:
1
http://localhost/forcom/index.php?cat1=1&cat2=1

herschrijven naar:
code:
1
http://localhost/forcom/1/1/
Maar wat moet ik nu doen als het geen cijfers, maar welbepaalde (lettervormige) categoriën zijn?
En iemand die herschreven url (http://localhost/forcom/ACC/BAT/) intikt in zijn browser, zal hij dan mijn oorspronkelijke link (index.php?cat1=ACC&cat2=BAT) wel vinden, zonder dat die zichtbaar is?

ik wil dus dat de gebruikers niet merken dat ze op index.php?cat1=ACC&cat2=BAT terrechtkomen...
Maar dat ze permanent http://localhost/forcom/ACC/BAT/ zien.
Kan er iemand mij op weg helpen?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je zult de regular expression moeten aanpassen zodat 'ie niet alleen matched op cijfers maar ook op letters/tekst ;)
Iets als: ([0-9]+)$ wordt dus zoiets: (.*)$ :Y)

[ Voor 4% gewijzigd door RobIII op 05-09-2006 17:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op dinsdag 05 september 2006 @ 17:06:
Je zult de regular expression moeten aanpassen zodat 'ie niet alleen matched op cijfers maar ook op letters/tekst ;)
Iets als: ([0-9]+)$ wordt dus zoiets: (.*)$ :Y)
ok ik heb op basis van jou aanwijzingen het volgende script gemaakt:
code:
1
2
RewriteEngine on
RewriteRule ^/(.*)$/(.*)$ index.php?cat1=(.*)$&cat2=(.*)$
Ik krijg geen error 500, dus het is volgens mij correcte syntaxis en dergelijke.
Echter hij past het niet toe.
ik krijg nog steeds dezelfde url's te zien boven in adresbalk... |:(

  • Setragasj
  • Registratie: Augustus 2001
  • Laatst online: 12-02 13:23

Setragasj

is using radars to communicate

code:
1
2
RewriteEngine on
RewriteRule ^/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?cat1=$1&cat2=$2

<Typ een persoonlijk bericht>


Verwijderd

Topicstarter
Setragasj schreef op dinsdag 05 september 2006 @ 17:44:
code:
1
2
RewriteEngine on
RewriteRule ^/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?cat1=$1&cat2=$2
Doet hij ook niet... cat1=$1 gaat niet werken denk ik, omdat ik met ACC en dergelijke werk.
Of zie ik het verkeerd?

  • Setragasj
  • Registratie: Augustus 2001
  • Laatst online: 12-02 13:23

Setragasj

is using radars to communicate

Hm hij zou het moeten doen. Het is een (beetje aangepaste weliswaar) kopie van wat ik gebruik.
Ik ben eigenlijk ook pas net een halfuurtje met mod_rewrite bezig..

Misschien dat deze sheet je kan helpen: http://www.ilovejackdaniels.com/mod_rewrite_cheat_sheet.png

<Typ een persoonlijk bericht>


Verwijderd

Topicstarter
jah idd... als ik die sheet bekijk zou hij het idd moeten doen :s
geen error 500 ofzo, gewoon doet niks...

Verwijderd

Topicstarter
UPDATE:
ok ik heb een werkend script dat, wanneer ik
http://localhost/submap/ACC/BAT/ ingeef,
hij naar http://localhost/submap/index.php?cat1=ACC&cat2=BAT
gaat...
Echter hij past geen stylesheet meer toe, terwijl de broncode wel correct is 8)7

deze regel zorgt gewoon dat je via mooiere url naar de echte gaat.
Maar hij is niet permanent...

Het script:
code:
1
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?cat1=$1&cat2=$2 [L]

[ Voor 13% gewijzigd door Verwijderd op 05-09-2006 21:40 ]


  • user109731
  • Registratie: Maart 2004
  • Niet online
Stylesheet word niet toegepast omdat je browser nu van http://localhost/submap/ACC/BAT/ uitgaat. Je browser ziet dat gewoon als een map ACC met daarin een map BAT. Dat de webserver dat stiekum doorsluist naar index.php?... is bij de client onbekend. Dus als je style.css gebruikt, dan gaatie opzoek naar http://localhost/submap/ACC/BAT/style.css, eigenlijk gewoon de normale regels dus voor absolute en relatieve urls.

Oplossing: De base-tag in je <head> zetten voordat je die stylesheet aanroept:
HTML:
1
2
<base href="http://localhost/submap/">
<link rel="stylesheet" type="text/css" href="style.css">


Of urls als /style.css gebruiken ipv style.css, dan isie ook niet meer relatief :)

[ Voor 40% gewijzigd door user109731 op 05-09-2006 22:02 ]


Verwijderd

Topicstarter
idd thanks das een oplossing voor de stylesheet...

Maar ik denk dat deze tool "RewriteRule" beter "RedirectRule" zou noemen.
Ik wil OP mijn werkende site een gemaskerde url. Want met deze werkwijze kan ik niet meer de parameters ?cat1=ACC&cat2=BAT aanroepen, wat dus eigelijk niet de bedoeling is...

Of is hier een workaround voor?

  • user109731
  • Registratie: Maart 2004
  • Niet online
Verwijderd schreef op woensdag 06 september 2006 @ 00:47:
Maar ik denk dat deze tool "RewriteRule" beter "RedirectRule" zou noemen.
Ik wil OP mijn werkende site een gemaskerde url. Want met deze werkwijze kan ik niet meer de parameters ?cat1=ACC&cat2=BAT aanroepen, wat dus eigelijk niet de bedoeling is...
Voor je index.php maakt het helemaal niets uit of je naar /ACC/BAT/ of direct naar /index.php?cat1=ACC&cat2=BAT gaat. De parameters cat1 en cat2 kun je gewoon op dezelfde manier aanroepen, en horen dezelfde waarden te geven. Als dit niet werkt, post dan je rewriteRule, daar zit dan nog wat verkeerd.

Voor het geval je bedoeld dat je pagina's nog 'oude' urls bevatten, daar is geen oplossing voor, die zul je zelf moeten veranderen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Waar hoort mijn topic? Serverconfiguratie heeft niets maar dan ook niets met programmeren te maken.

PRG>>WSS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1