Toon posts:

[Alg] Url veranderen: .com/?a=test&b=bla -> .com/test/bla

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi, op diverse sites zie ik dat de GET variabelen anders worden doorgegeven. Dus niet met ? en &, maar gewoon als een directory. Hier op tweakers en op fok.nl is dat ook het geval.
Nu vraag ik me af hoe je zoiets voor elkaar krijgt. Ik neem aan dat het allemaal dynamisch via Apache gebeurd..

Na wat zoekwerk ben ik op de site http://www.alistapart.com/articles/succeed gekomen. Ik heb alles wat erop staat, letterlijk gevolgd, maar wat ik nu krijg is niet het gewenste resultaat. Na mijn server opgestart te hebben en een willekeurige pagina te hebben bezocht crasht m'n server. Waarschijnlijk een oneindige loop.
Oftewel, dat kan aan mij liggen of aan die site, maar beter wordt ik er niet van.

Kan iemand misschien even uitleggen hoe zo'n url rewrite in z'n werk gaat? Wat ik daar voor nodig heb?

Alvast bedankt!

  • RMU
  • Registratie: Mei 2002
  • Laatst online: 26-03 01:52

RMU

*psst* FAQ ;)

P&W FAQ - PHP

Verwijderd

Topicstarter
Als ik dat doe, crasht m'n server.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Misschien handig als je je rewrite rules hier ook post. Zo kunnen we je ook niet helpen. En zo algemeen is dit niet, je had in je topic beter [Apache] kunnen noemen. :)

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


Verwijderd

Topicstarter
Oke, ik heb nu 2 dingen geprobeerd. Als eerste:
.htaccess
code:
1
2
RewriteEngine on
RewriteRule !\.(gif|jpg|png|css)$ /www/index.php

Die '/www' is mijn webroot; ik gebruik phpdev.
index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    if(file_exists($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'])

&&($_SERVER['SCRIPT_FILENAME']!=$_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'])
&&($_SERVER['REQUEST_URI']!='/'))
    {
        $url=$_SERVER['REQUEST_URI'];
        include($_SERVER['DOCUMENT_ROOT'].$url);
        exit();
    }
    $url=strip_tags($_SERVER['REQUEST_URI'];
    $url_array=explode('/',$url);
    array_shift($url_array);
    if(empty($url_array))
    {
        /* normale index.php gebeuren */
        exit();
    }
    /* dynamisch gebeuren, database etc. */
?>

Als ik nu naar localhost ga, crasht m'n site. Ook als ik localhost/index.php doe, of localhost/blabladiebla etc.

Nu doe ik wat anders:
.htaccess
code:
1
2
3
4
5
RewriteEngine on
RewriteRule ^mainstage$ index.php?a=mainstage
RewriteRule ^profile$ index.php?a=profile
RewriteRule ^portfolio$ index.php?a=portfolio
RewriteRule ^contact$ index.php?a=contact

Maar als ik nu naar een bestaande directory /projects/ ga, krijg ik een Forbidden error.
Hoe omzeil ik dat?

[ Voor 9% gewijzigd door Verwijderd op 18-09-2004 22:37 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Die PHP code is het probleem, je kan gewoon je $_GET array gebruiken. Apache vertaalt intern die URL naar een "echte" URL, alleen zul je dat nergens zien. Je PHP code kan echter gewoon get variabelen gebruiken zoals altijd.

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


  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
PHP:
1
2
3
<?php
$urlrewrite = explode('/' , $_SERVER['REQUEST_URI']);
?>

Doet hier het werk prima :). Niks htaccess.

[ Voor 22% gewijzigd door We Are Borg op 18-09-2004 23:03 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

We Are Borg schreef op 18 september 2004 @ 23:02:
PHP:
1
2
3
<?php
$urlrewrite = explode('/' , $_SERVER['REQUEST_URI']);
?>

Doet hier het werk prima :). Niks htaccess.
Mjah, maar je moet het niet gaan combineren. :P

Overigens is het ook ranzig om dit met PHP op te lossen, is zo gekunsteld. Die mod_rewrite module is hiervoor gewoon bedoeld... :P

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


  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Je hebt helaas niet altijd de 'luxe' van htaccess. Maar je hebt wel gelijk, de mod rewrite is mooier :)

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
ik heb urls met de vorm:

<domein>/index.php/forum/viewforum/1

en dat is makkelijk te realiseren met multiviews aan in je apache.
Verder een kwestie van je domein exploden en inlezen. :)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 14:15
Idd gewoon multiviews...

In apache 2 is daarnaast
code:
1
AcceptPathInfo On

wel handig, anders kun je in php nog niets.
offtopic:
en dat stond dan weer niet in de faq

Regeren is vooruitschuiven

Pagina: 1