Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 23-02-2004, 10:08
Martin
Avatar van Martin
Martin is offline
Ik wil voor mijn website gebruik gaan maken van de RewriteEngin om wat nettere URL's te creëren.

Nu heb ik het volgende opgedoken op PHPfreakz:

.htaccess
PHP-code:
RewriteEngine On
RewriteCond 
%{HTTP_HOST} ^dynamicdreams.nl/dev/*$
RewriteCond %{REQUEST_URI} !^/index/
RewriteRule (.*) /index/$1 
index.php
PHP-code:
<?
$file    = eregi_replace($_SERVER['SERVER_NAME'], "", $_SERVER['PHP_SELF']);   
$var    = explode("/", $file); 

/* print vars for debugging */
for($i = 1; $i <= 10;$i++ ){ 
    echo "$var[$i]<br>";
}
?>
De output van index.php:
Code:
dev
index.php
Op zich ziet dit er netjes uit, maar ik krijg dit niet voor elkaar:

http://www.dynamicdreams.nl/dev/fotoboek/1/ (bijvoorbeeld). Dan zegt het script Not Found
The requested URL was not found on this server.

Wat doe ik fout?
Met citaat reageren
Advertentie
Oud 23-02-2004, 12:37
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Vind je het niet véééél stoerder om *alle* requests door een master php file te behandelen?

www.dynamicdreams/dit/kun/je/zelf/bedenken
en altijd gaat hij zelf naar een php file, dus als jij adv je database de betreffende url/node niet kunt vinden, display je een mooie 404 in de stijl van je website. Woei!
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 23-02-2004, 12:39
Martin
Avatar van Martin
Martin is offline
Citaat:
Enlightenment schreef op 23-02-2004 @ 13:37:
Vind je het niet véééél stoerder om *alle* requests door een master php file te behandelen?

www.dynamicdreams/dit/kun/je/zelf/bedenken
en altijd gaat hij zelf naar een php file, dus als jij adv je database de betreffende url/node niet kunt vinden, display je een mooie 404 in de stijl van je website. Woei!
Is uiteindelijk wel de bedoeling, maar ik wil eerst ff proef draaien op dd.nl/dev.

Hoe pas ik de code nou aan zodat het wél werkt?
Met citaat reageren
Oud 23-02-2004, 12:45
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Dan moet je regex goed werken, en daar heb ik absoluut geen kennis van. Regular Expressions vind ik eng.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 23-02-2004, 12:48
Martin
Avatar van Martin
Martin is offline
Citaat:
Enlightenment schreef op 23-02-2004 @ 13:45:
Dan moet je regex goed werken, en daar heb ik absoluut geen kennis van. Regular Expressions vind ik eng.
muts

Hoe pas jij het dan toe op je website?
Met citaat reageren
Oud 23-02-2004, 12:51
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
Enlightenment schreef op 23-02-2004 @ 13:45:
Dan moet je regex goed werken, en daar heb ik absoluut geen kennis van. Regular Expressions vind ik eng.
Als je een 404 krijgt ligt dat dus absoluut niet aan je REGEXP

Apache kan die URL niet verwerken omdat hij naar een subdir zoekt. Is een apache-config kwestie dus, misschien op te lossen met een .htaccess ofzo.
Met citaat reageren
Oud 23-02-2004, 13:12
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Martin schreef op 23-02-2004 @ 13:48:
muts

Hoe pas jij het dan toe op je website?
Code:
<VirtualHost *>
    ServerName www.fluffles.net
    DocumentRoot /www/fluffles.net
    ErrorLog /www/logs/fluffles.net-error
    CustomLog /www/logs/fluffles.net-access common
    RewriteEngine on
    RewriteRule ^.*$ /dsm-master.php
</VirtualHost>
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 23-02-2004, 14:32
Martin
Avatar van Martin
Martin is offline
Werkt die code ook zo op mijn site? Ik snap er de ballen van.
Met citaat reageren
Oud 23-02-2004, 14:55
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Die code hoort in je httpd.conf van Apache
Indien je daar niet bij kunt kun je het in een .htaccess plaatsen, alhoewel dat wel inefficienter is gezien de technische constructie die daarbij gebruikt wordt. Maar het werkt dan wel.

De regexp rewriterule die ik gebruik, stuurt *ALLE* requests door naar één PHP file, in dit geval dsm-master.php

aan de hand van de URL ($url = $_SERVER['REQUEST_URI']) kun je dan de geschikte node erbij vinden.

Zie ook:
http://forum.scholieren.com/showthre...13#post9110813
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 23-04-2004, 17:14
Martin
Avatar van Martin
Martin is offline
Ik krijg dat stomme ding nog steeds niet aan de praat. Wat ik nu wil:

Dit intypen:
http://www.space.nu/films/44/

Dit bestaat niet echt, dus deze url moet ie rewriten naar:
http://www.space.nu/index.php?mid=44

Ik krijg echt niets voor elkaar, hoe gaat het nou wel werken?
Met citaat reageren
Oud 23-04-2004, 18:33
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Dat moet je ook niet willen. Je moet het PHP script aanpassen om gebruik te maken van de URL die gebruikt werd om het script aan te roepen.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 24-04-2004, 06:43
M@rco
Avatar van M@rco
M@rco is offline
Je hebt helemaal geen mod_rewrite nodig...

Ik gebruik in een script (nieuwsarchief) dit:

PHP-code:
$url explode("/"$PATH_INFO);
$query mysql_query("
    SELECT *,
    DATE_FORMAT(postdate, '%M %d, %Y at %r') as newsdate
    FROM news WHERE LOWER(DATE_FORMAT(postdate, '%M')) = '
$url[1]'
    AND DATE_FORMAT(postdate, '%Y') = '
$url[2]'
    ORDER BY postdate DESC
"
) or die(mysql_error()); 
De URL luidt dan bijvoorbeeld:
http://www.site.com/archive.php/november/2003

Werkt prima.
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.

Laatst gewijzigd op 24-04-2004 om 06:50.
Met citaat reageren
Oud 24-04-2004, 11:09
Scooter B0y
Avatar van Scooter B0y
Scooter B0y is offline
waarom RewriteEngine als je net zo makkelijk multiviews kan gebruiken ?
Met citaat reageren
Oud 24-04-2004, 12:55
Martin
Avatar van Martin
Martin is offline
Citaat:
Scooter B0y schreef op 24-04-2004 @ 12:09 :
waarom RewriteEngine als je net zo makkelijk multiviews kan gebruiken ?
hoe werkt dat dan?
Met citaat reageren
Oud 24-04-2004, 14:34
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
MultiViews is dat wat M@rco ook bedoelt. Het komt erop neer dat je path niet ophoudt bij het bestand dat de request moet verwerken, maar dat je daarna gewoon doorgaat. In het script kan je dan die rest van dat path opvragen en aan de hand daarvan actie ondernemen. Als je bovendien de extensie van het bestand weghaalt kunnen mensen niet meer zo makkelijk zien dat je PHP gebruikt hebt.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 24-04-2004, 15:47
Martin
Avatar van Martin
Martin is offline
Citaat:
M@rco schreef op 24-04-2004 @ 07:43 :
Je hebt helemaal geen mod_rewrite nodig...

Ik gebruik in een script (nieuwsarchief) dit:

PHP-code:
$url explode("/"$PATH_INFO);
$query mysql_query("
    SELECT *,
    DATE_FORMAT(postdate, '%M %d, %Y at %r') as newsdate
    FROM news WHERE LOWER(DATE_FORMAT(postdate, '%M')) = '
$url[1]'
    AND DATE_FORMAT(postdate, '%Y') = '
$url[2]'
    ORDER BY postdate DESC
"
) or die(mysql_error()); 
De URL luidt dan bijvoorbeeld:
http://www.site.com/archive.php/november/2003

Werkt prima.
hoe heb jij dan je .htaccess opgebouwd?
Met citaat reageren
Oud 25-04-2004, 03:50
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
M@rco schreef op 24-04-2004 @ 07:43 :
Je hebt helemaal geen mod_rewrite nodig...

Ik gebruik in een script (nieuwsarchief) dit:

De URL luidt dan bijvoorbeeld:
http://www.site.com/archive.php/november/2003

Werkt prima.
Dat werkt alleen als er wel een vorm van rewrite aanwezig is. Normaliter zal Apache namelijk zoeken in de docroot naar een directory genaamd "archive.php" en daarin de directory "november" en daarin "2003".

Is dit misschien de "Virtual directory" feature?
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 25-04-2004, 10:01
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Citaat:
Enlightenment schreef op 25-04-2004 @ 04:50 :
Dat werkt alleen als er wel een vorm van rewrite aanwezig is. Normaliter zal Apache namelijk zoeken in de docroot naar een directory genaamd "archive.php" en daarin de directory "november" en daarin "2003".
False, 0, onjuist en onwaar.

Dit zou ook al moeten werken met alleen MultiViews aan. Ik ben er nog steeds niet achter hoe het precies zit (heb er zelf ook een paar problemen mee op bepaalde servers), maar je hebt mod_rewrite hier in ieder geval niet voor nodig.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 25-04-2004, 18:00
M@rco
Avatar van M@rco
M@rco is offline
Citaat:
Martin schreef op 24-04-2004 @ 16:47 :
hoe heb jij dan je .htaccess opgebouwd?
Niet.
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.
Met citaat reageren
Oud 25-04-2004, 18:31
Martin
Avatar van Martin
Martin is offline
Citaat:
M@rco schreef op 25-04-2004 @ 19:00 :
Niet.
Hoe doe je het dan? Ik snap er echt helemaal niets van
Met citaat reageren
Oud 25-04-2004, 18:36
deathz0rz
deathz0rz is offline
Citaat:
M@rco schreef op 25-04-2004 @ 19:00 :
Niet.
__________________
Ooit. Dan.
Met citaat reageren
Oud 25-04-2004, 18:45
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Martin, zet dan eens Options All MultiViews in je .htaccess.

Vervolgens kijken wat er gebeurt als je index.php/slaap/ opvraagt.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 25-04-2004, 19:29
M@rco
Avatar van M@rco
M@rco is offline
Citaat:
Martin schreef op 25-04-2004 @ 19:31 :
Hoe doe je het dan? Ik snap er echt helemaal niets van
Gewoon, alleen die code die er staat.

Je hebt er niets speciaals voor nodig, alleen Apache; het maakt gebruik van de zogenaamde "Look Back" feature, Zie ook hier:

http://www.sitepoint.com/article/485
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.
Met citaat reageren
Oud 25-04-2004, 19:31
deathz0rz
deathz0rz is offline
Citaat:
Martin schreef op 25-04-2004 @ 19:31 :
Hoe doe je het dan? Ik snap er echt helemaal niets van
hij doet het natuurlijk met httpd.conf
__________________
Ooit. Dan.
Met citaat reageren
Oud 25-04-2004, 19:55
M@rco
Avatar van M@rco
M@rco is offline
Citaat:
deathz0rz schreef op 25-04-2004 @ 20:31 :
hij doet het natuurlijk met httpd.conf
Ik doe niks... httpd.conf kan ik geeneens bij. Dit is gewoon op een shared hosting-server.
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.
Met citaat reageren
Advertentie
Oud 25-04-2004, 19:59
Martin
Avatar van Martin
Martin is offline
Citaat:
M@rco schreef op 25-04-2004 @ 20:55 :
Ik doe niks... httpd.conf kan ik geeneens bij. Dit is gewoon op een shared hosting-server.
Ik heb het inmiddels ook werkend. Maar is het ook mogelijk om de vermelding "index.php" bijvoorbeeld weg te halen?
Met citaat reageren
Oud 25-04-2004, 20:03
M@rco
Avatar van M@rco
M@rco is offline
Misschien is dit meer wat je zoekt?

http://www.sitepoint.com/article/sea...riendly-urls/3
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.
Met citaat reageren
Oud 25-04-2004, 21:04
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Voor het weghalen van de index.php kan je denk ik het best de RewriteRule van Enlightenment gebruiken.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 26-04-2004, 08:56
Scooter B0y
Avatar van Scooter B0y
Scooter B0y is offline
Code:
Options +MultiViews
pleur dat in je .htaccess (in die map) en je bent klaar
Met citaat reageren
Oud 26-04-2004, 10:33
Verwijderd
Excuses als het al gezegd is, lang weekend achter de rug..
Maar ondersteund je host dit wel?
Met citaat reageren
Oud 26-04-2004, 15:20
Martin
Avatar van Martin
Martin is offline
Citaat:
********** schreef op 26-04-2004 @ 11:33 :
Excuses als het al gezegd is, lang weekend achter de rug..
Maar ondersteund je host dit wel?
jup
Met citaat reageren
Oud 01-05-2004, 03:13
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Manuzhai schreef op 25-04-2004 @ 11:01 :
False, 0, onjuist en onwaar.

Dit zou ook al moeten werken met alleen MultiViews aan. Ik ben er nog steeds niet achter hoe het precies zit (heb er zelf ook een paar problemen mee op bepaalde servers), maar je hebt mod_rewrite hier in ieder geval niet voor nodig.
Ik zei "een vorm van rewrite", waarmee ik dus niet alleen mod_rewrite bedoel. Ook de ingebouwde alias'en in httpd.conf is een vorm van rewrite. /blah vertaalt hij namelijk naar een andere request. Ook jouw MultiViews (ken het zelf niet) zou hieronder vallen, want zonder enige mods zoekt de server doodleuk voor een directory foobar.php.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 01:49.