user-friendly links zonder dat de URL verspringt: htaccess?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil user-friendly links op mijn site kunnen gebruiken, zodat mensen naar "www.mijnsite.nl/producten" kunnen surfen in plaats van naar "www.mijnsite.nl/cmssysteem/page.php?id=185&enzovoort". Ik weet dat dit bijvoorbeeld met htaccess mogelijk is, maar dan verspringt de URL in de adresbalk naar dat lange adres.

Kan ik het ook zo opzetten dat mensen die korte URL in hun adresbalk houden?
(Gaat uiteraard om redirects binnen mijn eigen site, dus geen andere domeinen)

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

Ja.

alleen zo zonder wat meer code en/of eigen inbreng wordt het lastig om een beter geformuleerd antwoord te geven.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

mod_rewrite is je google term ;)

correct me if I'm wrong

Acties:
  • 0 Henk 'm!

  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 18-09 14:48

Rowdy.nl

Koekje d'r bij?

^^ Klopt, is overigens gewoon met de .htaccess.
Post je .htaccess eens, want ik denk dat niet helemaal lekker is...

Mijn site doet dat ook, middels de .htaccess, zonder verspringen... ;)

Edit; this is all that's to it... :)
code:
1
2
3
4
5
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule ^blog/(.*) ./index.php?module=blog&str=$1 [nc]

[ Voor 29% gewijzigd door Rowdy.nl op 09-05-2008 08:59 ]

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mod_rewrite ken ik, dat bedoelde ik met htaccess, dan doe ik het zo:

RewriteEngine On
RewriteRule /producten /cmssysteem/blabla.php?id=12345enz

Maar als mensen dan naar de korte URL surfen verspringt het adres in hun browser naar die lelijke URL, en ik wil dat ze die eerste houden.

Ik heb het ook geprobeerd met [R] en [P], maar dat helpt niet. URL blijft verspringen. Als ik de mod_rewrite documentatie begrijp zou [P] wel moeten doen wat ik wil... mits er een of ander proxy-iets is ingesteld in Apache. Maar helaas, heb het bij 2 hosting providers geprobeerd en dat werkt bij allebei niet.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Maak je in je code misschien gebruik van (clientside) redirects? Heb je binnen je applicatie verder de links ook aangepast zodat met het drukken op een link niet weer naar de lelijke variant gesprongen wordt?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat bedoel je met clientside redirects, een meta refresh tag in de head, of document.location=url javascript? Nee, enige wat ik aan redirect doe is het maskeren van die lange URL's (in de htaccess dus).

Ik heb ook wel eens gelezen dat dit kan door de 404 error te misbruiken, maar dat verziekt je stats en error logging lijkt me.

Acties:
  • 0 Henk 'm!

  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 18-09 14:48

Rowdy.nl

Koekje d'r bij?

Knikker eens een simpele, kale html file op je server.

HTML:
1
2
3
4
5
6
<html>
  <head>
    <title>TEST</title>
  </head>
  <body>TESTPAGE</body>
</html>


En dan een .htaccess file met het volgende erbij;
code:
1
2
RewriteEngine On
RewriteRule /test /test.html


Zo kun je al zaken uitsluiten. Indien je indien je naar http://site.nl/test surft en je ziet in de balk dat je wordt geredirect naar die testfile dan is er iets kachels met je .htaccess. Indien je netjes op je /test url blijft moet je de fout in de code van je CMS zoeken, zoals Janoz suggereerd... ;)

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
Heb je toevallig het www.mijnsite.nl deel van je url in je redirect staan ipv alleen het pad? Dan wordt ook de url in de adresbalk gewijzigd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Rowdy, ik heb zo'n beetje precies zo getest als jij suggereert (en inderdaad _js_ zonder de domeinnaam in de redirect), maar toch springt hij nog naar de nieuwe URL ;(

inhoud .htaccess:
code:
1
2
RewriteEngine On
RewriteRule test_kort /test_lang.php

inohud /test_lang.php:
code:
1
<?php die("deze php heeft een lelijke url"); ?>


Als ik naar test_kort surf dan verspringt de adresbalk naar test_lang.
Als ik [P] erachter zet doet hij het niet (dan is het gewoon "test_kort not found").

Acties:
  • 0 Henk 'm!

  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 18-09 14:48

Rowdy.nl

Koekje d'r bij?

Doe eens een html file proberen...? Geen php; je sluit nl nog steeds PHP niet uit... (Geen idee of die zo kan kachelen) Een html doet de server verder niks mee behalve naar de client sturen...

En wat voor OS draait je server?

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op vrijdag 09 mei 2008 @ 10:22:
Wat bedoel je met clientside redirects, een meta refresh tag in de head, of document.location=url javascript?
Onder andere, maar bijvoorbeeld ook header("redirect: .. ") ;

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Krijg nou wat... Nu doet hij het wel, en daarna doet de PHP test (precies zoals ik hierboven heb neergezet) het ook!
Terwijl ik tijdens het testen die htaccess en php files wel tien keer heb gesaved en nog vaker gerefreshed!?

Server: Unix (weet niet welk merk), Apache/2.0.61, PHP/4.4.7

Nou ja, probleem opgelost :D Thanks!!

Overigens met [R] erachter verspringt de URL nog wel, maar da's logisch (zelfde als header("location: ")

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Toch nog een vraagje dan: zou ik die "onzichtbare redirects" ook vanuit PHP kunnen regelen? Met name zodat ik niet voor iedere pagina m'n htaccess hoef te editten, maar dat dat via een PHP'tje kan (en dan later zelfs een lijst met pagina's uit een DB zodat er een admin interfaceje omheen kan enz)

Er is voor .htaccess niet zoiets als include he? (om een lijst met rewriterules te includen bijvoorbeeld)

Acties:
  • 0 Henk 'm!

  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 18-09 14:48

Rowdy.nl

Koekje d'r bij?

Zie ook mijn eerste .htaccess voorbeeld...
Ik redirect alles naar een index.php die de correcte module laad en de database connecties regelt etc...

Je zou dus zoiets kunnen doen...
code:
1
2
3
RewriteEngine On

RewriteRule ^(.*)/(.*) ./redirect.php?module=$1&parameter1=$2 [nc]

Etc... :)

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


Acties:
  • 0 Henk 'm!

Verwijderd

Rowdy.nl schreef op vrijdag 09 mei 2008 @ 08:56:
^^ Klopt, is overigens gewoon met de .htaccess.
Post je .htaccess eens, want ik denk dat niet helemaal lekker is...

Mijn site doet dat ook, middels de .htaccess, zonder verspringen... ;)

Edit; this is all that's to it... :)
code:
1
2
3
4
5
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule ^blog/(.*) ./index.php?module=blog&str=$1 [nc]
Bedankt Rowdy.nl
Ik heb het nu ook werkende gekregen volgens jouw .htaccess rules, maar toch heb ik nog een aantal vragen.
Zijn dit 301 redirects of 302 redirects?
Hoe zorg je ervoor dat er automatisch een / achter de link komt, als die niet is ingetypt?

Dus: www.naam.nl/tweakers wordt www.naam.nl/tweakers/

Mijn .htaccess
code:
1
2
3
4
5
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule ^tweakers/ ./index.php?p=tweakers [nc]

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21-09 14:53

MueR

Admin Tweakers Discord

is niet lief

Dit zijn geen redirects, dit zijn rewrites.

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


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

MueR schreef op vrijdag 24 april 2009 @ 13:40:
Dit zijn geen redirects, dit zijn rewrites.
Om dat iets verder uit te diepen: een redirect zegt tegen je browser "hee, je zit hier verkeerd, je moet daarnaartoe". Een rewrite is iets dat je browser helemaal niet merkt en geheel aan de serverkant gebeurt. :)

En waarom zou je per se een / achter de url willen zien als die er niet staat? Dat zou dan wél weer met een redirect moeten gebeuren omdat je de adresbalk wil aanpassen. Waarom laat je niet gewoon dezelfde pagina zien, ongeacht of die / er wel of niet staat?

En ook belangrijk: waarom kick je een zijdelings gerelateerd topic van een jaar oud als je ook gewoon een eigen topic had kunnen openen? ;)

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


Acties:
  • 0 Henk 'm!

Verwijderd

NMe schreef op vrijdag 24 april 2009 @ 13:52:
[...]

1. Om dat iets verder uit te diepen: een redirect zegt tegen je browser "hee, je zit hier verkeerd, je moet daarnaartoe". Een rewrite is iets dat je browser helemaal niet merkt en geheel aan de serverkant gebeurt. :)

2. En waarom zou je per se een / achter de url willen zien als die er niet staat? Dat zou dan wél weer met een redirect moeten gebeuren omdat je de adresbalk wil aanpassen. Waarom laat je niet gewoon dezelfde pagina zien, ongeacht of die / er wel of niet staat?

3. En ook belangrijk: waarom kick je een zijdelings gerelateerd topic van een jaar oud als je ook gewoon een eigen topic had kunnen openen? ;)
1. Oke, maar wat is de juiste tactiek?

2. Die / moet erachter staan anders werkt de pagina niet en krijg je een 404error. Hoe is dit het beste op te lossen dan?

3. Dit topic kick ik, omdat het hier ongeveer over dezelfde vraag gaat. Plus ik hieruit mijn htaccess bestand heb gemaakt. Voortaan een eigen topic maken?

[ Voor 3% gewijzigd door Verwijderd op 24-04-2009 14:00 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 24 april 2009 @ 14:00:
[...]


1. Oke, maar wat is de juiste tactiek?
Tactiek? :? Het hangt er maar net vanaf wat je wil: wil je dat je URL's herschreven worden of wil je dat je browser voor elke pagina die je bezoekt een redirect moet doen? Ik denk dat ik wel kan raden dat je dat eerste wil. ;)
2. Die / moet erachter staan anders werkt de pagina niet en krijg je een 404error. Hoe is dit het beste op te lossen dan?
Die 404 kun je oplossen door de URL ook te herschrijven als er geen / achter staat. Bijvoorbeeld:
code:
1
RewriteRule ^tweakers/? ./index.php?p=tweakers [nc]

Zoek het verschil. ;)
3. Dit topic kick ik, omdat het hier ongeveer over dezelfde vraag gaat. Plus ik hieruit mijn htaccess bestand heb gemaakt. Voortaan een eigen topic maken?
Graag. :)

'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