Bekijk Volledige Versie : Apache, PHP en mod_rewrite
Op mijn webserver thuis draait apache en PHP 4.3.2. Voor mijn webpagina wil
ik nu mod_rewrite gebruiken, om zo van php pagina's mooie statische html
url's te maken. In mijn httpd.conf heb ik het # teken weggehaald bij
LoadModule rewrite_module modules/mod_rewrite.so
en AddModule mod_rewrite.c. Hierna de server gerestart, maar ik zie geen
verschil. Hoe kan ik nu zien op mod_rewrite geladen is. in de phpinfo() kan
ik het niet vinden......
--
# Reply at the bottom and on a empty line, not behind any >>> sign #
I only read mail sent to the adres at the bottom.
Mike@Familie-Smit(punt)nl (vervang (punt) voor een .)
Rene Pijlman
03/01/05, 21:55
Obiku:
[mod_rewrite enabled]
>Hierna de server gerestart, maar ik zie geen verschil.
Tussen wat en wat?
>Hoe kan ik nu zien op mod_rewrite geladen is. in de phpinfo() kan ik
>het niet vinden......
Ik heb geen flauw idee of dat in phpinfo() zou moeten verschijnen, maar
wat gebeurt er eigenlijk als je mod_rewrite gewoon gebruikt?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman wrote:
> Obiku:
> [mod_rewrite enabled]
>> Hierna de server gerestart, maar ik zie geen verschil.
>
> Tussen wat en wat?
Wanneer een bezoeker van mijn ingelogd is op mijn forum ziet hij alle
pagina's zoals ze zijn (php extentie's). Is een bezoeker niet ingelogd dan
zorgt een php script dat het oproepen van een pagina een html extentie
krijgt. mod_rewrite dient dan die html url om te zetten naar het juiste php
script. Het script dat van de php html url's maakt werkt. maar wanneer ik
dus zo'n html pagina oproep wordt dit niet door mod_rewrite door verwezen
naar het juiste php script. Ik krij een 404 error
>
>> Hoe kan ik nu zien op mod_rewrite geladen is. in de phpinfo() kan ik
>> het niet vinden......
>
> Ik heb geen flauw idee of dat in phpinfo() zou moeten verschijnen,
> maar wat gebeurt er eigenlijk als je mod_rewrite gewoon gebruikt?
Zie boven
--
# Reply at the bottom and on a empty line, not behind any >>> sign #
I only read mail sent to the adres at the bottom.
Mike@Familie-Smit(punt)nl (vervang (punt) voor een .)
John Bokma
03/01/05, 22:45
Obiku wrote:
> Rene Pijlman wrote:
>> Obiku:
>> [mod_rewrite enabled]
>>> Hierna de server gerestart, maar ik zie geen verschil.
>>
>> Tussen wat en wat?
>
> Wanneer een bezoeker van mijn ingelogd is op mijn forum ziet hij alle
> pagina's zoals ze zijn (php extentie's). Is een bezoeker niet ingelogd
> dan zorgt een php script dat het oproepen van een pagina een html
> extentie krijgt. mod_rewrite dient dan die html url om te zetten naar
> het juiste php script. Het script dat van de php html url's maakt
> werkt. maar wanneer ik dus zo'n html pagina oproep wordt dit niet door
> mod_rewrite door verwezen naar het juiste php script. Ik krij een 404
> error
Staan je mod_rewrite regels in een .htaccess bestand?
Zoja, zet daar eens
ASKASu9asua9s
in?
Krijg je nu een 500 Server Error?
Zoja, dan wordt je .htaccess bestand ingelezen, zo nee, dan niet, en dan
werkt daardoor je mod_rewrite niet.
>> Ik heb geen flauw idee of dat in phpinfo() zou moeten verschijnen,
Voorzover ik hier zie, nee. Ik heb recent mijn Apache config zitten
hacken, en mod_rewrite nog niet getest, maar ik weet vrij zeker dat ik
die wel inlees, ik kan geen mod_rewrite terugvinden in de phpinfo()
uitvoer.
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Rene Pijlman
03/01/05, 22:45
Obiku:
>maar wanneer ik dus zo'n html pagina oproep wordt dit niet door
>mod_rewrite door verwezen naar het juiste php script. Ik krijg een
>404 error
Dan zou er weleens een fout kunnen zitten in je rewrite rules ofzo. Maar
ja, die kennen wij niet. Wij kennen ook de structuur van de URL's voor en
na rewriten niet.
En wat staat er in de error log?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Daniel Tryba
03/01/05, 23:05
Obiku <Mike@nospam.nl> wrote:
>>> Hierna de server gerestart, maar ik zie geen verschil.
>>
>> Tussen wat en wat?
>
> Wanneer een bezoeker van mijn ingelogd is op mijn forum ziet hij alle
> pagina's zoals ze zijn (php extentie's). Is een bezoeker niet ingelogd dan
> zorgt een php script dat het oproepen van een pagina een html extentie
> krijgt. mod_rewrite dient dan die html url om te zetten naar het juiste php
> script. Het script dat van de php html url's maakt werkt. maar wanneer ik
> dus zo'n html pagina oproep wordt dit niet door mod_rewrite door verwezen
> naar het juiste php script. Ik krij een 404 error
Huh! Dit doet de rewrite engine helemaal niet (automatisch) voor je.
Het lijkt alsof je opzoek bent naar een intelligentere versie van
MultiViews. Dat kan je IMHO het best bereiken door alles door 1
serverside script te douwen welke als controller functioneert.
Nico Coesel
03/01/05, 23:35
"Obiku" <Mike@NoSpam.nl> wrote:
> Op mijn webserver thuis draait apache en PHP 4.3.2. Voor mijn webpagina wil
>ik nu mod_rewrite gebruiken, om zo van php pagina's mooie statische html
>url's te maken. In mijn httpd.conf heb ik het # teken weggehaald bij
>LoadModule rewrite_module modules/mod_rewrite.so
>en AddModule mod_rewrite.c. Hierna de server gerestart, maar ik zie geen
>verschil. Hoe kan ik nu zien op mod_rewrite geladen is. in de phpinfo() kan
>ik het niet vinden......
Je moet mod_rewrite wel configureren. Dit kan via de .htaccess of via
de configuratie van Apache. Om wat te proberen kun je het beste eerst
de .htaccess manier gebruiken.
--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl
Rene Pijlman wrote:
> Obiku:
>> maar wanneer ik dus zo'n html pagina oproep wordt dit niet door
>> mod_rewrite door verwezen naar het juiste php script. Ik krijg een
>> 404 error
>
> Dan zou er weleens een fout kunnen zitten in je rewrite rules ofzo.
> Maar ja, die kennen wij niet. Wij kennen ook de structuur van de
> URL's voor en na rewriten niet.
>
> En wat staat er in de error log?
Via de volgende regels code in zorg ik er voor dat niet ingelogde bezoekers
html url's zien.
if ( !$userdata['session_logged_in'] )
{
ob_start();
function replace_for_mod_rewrite(&$s)
{
$urlin =
array(
"'(?<!/)viewforum.php\?f=([0-9]*)&topicdays=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewforum.php\?f=([0-9]*)&mark=topics'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&watch=topic*'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&unwatch=topic*'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&highlight=*'",
"'(?<!/)viewforum.php\?f=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&view=previous'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&view=next'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&vote=viewresult'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&start=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&highlight=([a-zA-Z0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)'",
"'(?<!/)viewtopic.php&p=([0-9]*)'",
"'(?<!/)viewtopic.php\?p=([0-9]*)'",
);
$urlout = array(
"topic-\\1-\\2-\\3.html",
"mark-forum\\1.html",
"updates-topic\\1.html",
"stop-updates-topic\\1.html",
"about\\1.html&highlight=\\2",
"forum-\\1.html",
"ptopic\\1.html",
"ntopic\\1.html",
"view-poll\\1-\\2-\\3.html",
"about\\1-\\2-\\3-\\4.html",
"about\\1.html",
"about\\1-\\2.html",
"about\\1.html",
"post-\\1.html",
"post-\\1.html",
);
$s = preg_replace($urlin, $urlout, $s);
return $s;
}
}
Dan staat er nog in mijn .htaccess
RewriteEngine On
RewriteRule ^forums.* index.php [L,NC]
RewriteRule ^post-([0-9]*).html&highlight=([a-zA-Z0-9]*)
viewtopic.php?p=$1&highlight=$2 [L,NC]
RewriteRule ^post-([0-9]*).* viewtopic.php?p=$1 [L,NC]
RewriteRule ^view-poll([0-9]*)-([0-9]*)-([a-zA-Z]*).*
viewtopic.php?t=$1&postdays=$2&postorder=$3&vote=viewresult [L,NC]
RewriteRule ^about([0-9]*).html&highlight=([a-zA-Z0-9]*)
viewtopic.php?t=$1&highlight=$2 [L,NC]
RewriteRule ^about([0-9]*).html&view=newest viewtopic.php?t=$1&view=newest
[L,NC]
RewriteRule ^about([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).*
viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4 [L,NC]
RewriteRule ^about([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2 [L,NC]
RewriteRule ^about([0-9]*).* viewtopic.php?t=$1 [L,NC]
RewriteRule ^about([0-9]*).html
viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5 [L,NC]
RewriteRule ^mark-forum([0-9]*).html* viewforum.php?f=$1&mark=topics [L,NC]
RewriteRule ^updates-topic([0-9]*).html* viewtopic.php?t=$1&watch=topic
[L,NC]
RewriteRule ^stop-updates-topic([0-9]*).html*
viewtopic.php?t=$1&unwatch=topic [L,NC]
RewriteRule ^forum-([0-9]*).html viewforum.php?f=$1 [L,NC]
RewriteRule ^forum-([0-9]*).* viewforum.php?f=$1 [L,NC]
RewriteRule ^topic-([0-9]*)-([0-9]*)-([0-9]*).*
viewforum.php?f=$1&topicdays=$2&start=$3 [L,NC]
RewriteRule ^ptopic([0-9]*).* viewtopic.php?t=$1&view=previous [L,NC]
RewriteRule ^ntopic([0-9]*).* viewtopic.php?t=$1&view=next [L,NC]
In mijn error log staat het volgende
[Sat Jan 01 20:53:29 2005] [error] [client x.x.x.x] File does not exist:
d:/www/forums/forum-8.html
[Sat Jan 01 20:53:45 2005] [error] [client x.x.x.x] File does not exist:
d:/www/forums/forum-9.html
[Sat Jan 01 21:15:22 2005] [error] [client x.x.x.x] File does not exist:
d:/www/forums/forum-8.html
--
# Reply at the bottom and on a empty line, not behind any >>> sign #
I only read mail sent to the adres at the bottom.
Mike@Familie-Smit(punt)nl (vervang (punt) voor een .)
Rene Pijlman
04/01/05, 10:05
Obiku:
>Rene Pijlman:
>> Dan zou er weleens een fout kunnen zitten in je rewrite rules ofzo.
>> Maar ja, die kennen wij niet. Wij kennen ook de structuur van de
>> URL's voor en na rewriten niet.
>>
>> En wat staat er in de error log?
>
>Via de volgende regels code in zorg ik er voor dat niet ingelogde bezoekers
>html url's zien.
Ja, ga vooral door met alles te negeren wat de mensen die je proberen te
helpen hier schrijven. Veel succes ermee. Dag.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman wrote:
> Obiku:
>> Rene Pijlman:
>>> Dan zou er weleens een fout kunnen zitten in je rewrite rules ofzo.
>>> Maar ja, die kennen wij niet. Wij kennen ook de structuur van de
>>> URL's voor en na rewriten niet.
>>>
>>> En wat staat er in de error log?
>>
>> Via de volgende regels code in zorg ik er voor dat niet ingelogde
>> bezoekers html url's zien.
>
> Ja, ga vooral door met alles te negeren wat de mensen die je proberen
> te helpen hier schrijven. Veel succes ermee. Dag.
Ik geef gewoon antwoord op je EIGEN vraag
--
# Reply at the bottom and on a empty line, not behind any >>> sign #
I only read mail sent to the adres at the bottom.
Mike@Familie-Smit(punt)nl (vervang (punt) voor een .)
Daniel Tryba
04/01/05, 11:25
Obiku <Mike@nospam.nl> wrote:
[knip]
> In mijn error log staat het volgende
> [Sat Jan 01 20:53:29 2005] [error] [client x.x.x.x] File does not exist:
> d:/www/forums/forum-8.html
Een typisch gevalletje van door de bomen he bos niet meer zien. Er is
geen rewriterule voor de url die werd opgevraagt (tenminste als ik goed
gok dat de /www de documentroot is).
BTW meerdere van de regexpes zitten niet netjes in elkaar, dingen als
'^foo.html*' is zeer onwaarschijnlijk de match die je echt wilt hebben.
Daniel Tryba wrote:
> Obiku <Mike@nospam.nl> wrote:
> [knip]
>> In mijn error log staat het volgende
>> [Sat Jan 01 20:53:29 2005] [error] [client x.x.x.x] File does not
>> exist: d:/www/forums/forum-8.html
>
> Een typisch gevalletje van door de bomen he bos niet meer zien. Er is
> geen rewriterule voor de url die werd opgevraagt (tenminste als ik
> goed gok dat de /www de documentroot is).
>
> BTW meerdere van de regexpes zitten niet netjes in elkaar, dingen als
> '^foo.html*' is zeer onwaarschijnlijk de match die je echt wilt
> hebben.
/www is inderdaad mijn documentroot. In de directory www/forums/ staat mijn
forum (phpbb) met diverse aanpassingen hierin.
Wat ik me nu afvraag, na veel proberen, moet er nog meer in de httpd.conf
veranderd worden, uitgezonderd de loadmodule en addmodule. In de httpd.conf
staat ook een AllowOverride None, maar als ik die varander naar All, is mijn
website niet meer bereikbaar, error 500. BTW die .htaccess staat in de
/forums directory
--
# Reply at the bottom and on a empty line, not behind any >>> sign #
I only read mail sent to the adres at the bottom.
Mike@Familie-Smit(punt)nl (vervang (punt) voor een .)
Daniel Tryba
04/01/05, 13:15
Obiku <Mike@nospam.nl> wrote:
>> Een typisch gevalletje van door de bomen he bos niet meer zien. Er is
>> geen rewriterule voor de url die werd opgevraagt (tenminste als ik
>> goed gok dat de /www de documentroot is).
>
> /www is inderdaad mijn documentroot. In de directory www/forums/ staat mijn
> forum (phpbb) met diverse aanpassingen hierin.
> Wat ik me nu afvraag, na veel proberen, moet er nog meer in de httpd.conf
> veranderd worden, uitgezonderd de loadmodule en addmodule. In de httpd.conf
> staat ook een AllowOverride None, maar als ik die varander naar All, is mijn
> website niet meer bereikbaar, error 500. BTW die .htaccess staat in de
> /forums directory
En er komt weer extra info die uitermate belangrijk is.
http://httpd.apache.org/docs-2.0/mod/core.html.en#allowoverride
<q>
When this directive is set to None, then .htaccess files are completely
ignored. In this case, the server will not even attempt to read
..htaccess files in the filesystem.
</q>
Dat je een 500 krijgt als je .htaccess wel wordt gelezen duidt
natuurlijk op een fout. Overigens zal er ook wel wat in de logfiles
staan over die 500.
Het wordt wellicht tijd dat je de tutorial helemaal doorneemt:
http://httpd.apache.org/docs-2.0/howto/htaccess.html
Het blijft hier immers een vraag/antwoord spelletje aangezien je geen
testcase hebt die iedereen op zijn eigen systeem kan reproduceren. Je
initieele aanpak is veel te complex.
Jan Ehrhardt
04/01/05, 13:55
Obiku in nl.internet.www.server-side (Tue, 4 Jan 2005 12:47:04 +0100):
>Wat ik me nu afvraag, na veel proberen, moet er nog meer in de httpd.conf
>veranderd worden, uitgezonderd de loadmodule en addmodule. In de httpd.conf
>staat ook een AllowOverride None, maar als ik die varander naar All, is mijn
>website niet meer bereikbaar, error 500.
Dan zit er iets fout in je .htaccess. Sloop die .htaccess eens
successievelijk om te kijken welk stukje die error genereert.
Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/
John Bokma
04/01/05, 18:35
Obiku wrote:
> In de httpd.conf staat ook een AllowOverride None, maar als ik die
> varander naar All, is mijn website niet meer bereikbaar, error 500.
Goh, en mijn tip niet geprobeerd?
Ik gok dat je .htaccess gewoon fout is.
Nogmaals, tik in:
asaqsd912381293
in je .htaccess
als je geen 500 krijgt, dan wordt je .htaccess niet gelezen. (En ik weet
vrij zeker dat dat het geval is).
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
John Bokma
04/01/05, 18:35
Jan Ehrhardt wrote:
> Obiku in nl.internet.www.server-side (Tue, 4 Jan 2005 12:47:04 +0100):
>
>>Wat ik me nu afvraag, na veel proberen, moet er nog meer in de
>>httpd.conf veranderd worden, uitgezonderd de loadmodule en addmodule.
>>In de httpd.conf staat ook een AllowOverride None, maar als ik die
>>varander naar All, is mijn website niet meer bereikbaar, error 500.
>
> Dan zit er iets fout in je .htaccess. Sloop die .htaccess eens
> successievelijk om te kijken welk stukje die error genereert.
Boehoehoe, zoals ik al dacht :-)
msgid: Xns95D39ED4C6CDAcastleamber@130.133.1.4
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
John Bokma wrote:
> Jan Ehrhardt wrote:
>
>> Obiku in nl.internet.www.server-side (Tue, 4 Jan 2005 12:47:04
>> +0100):
>>
>>> Wat ik me nu afvraag, na veel proberen, moet er nog meer in de
>>> httpd.conf veranderd worden, uitgezonderd de loadmodule en
>>> addmodule. In de httpd.conf staat ook een AllowOverride None, maar
>>> als ik die varander naar All, is mijn website niet meer bereikbaar,
>>> error 500.
>>
>> Dan zit er iets fout in je .htaccess. Sloop die .htaccess eens
>> successievelijk om te kijken welk stukje die error genereert.
>
> Boehoehoe, zoals ik al dacht :-)
>
> msgid: Xns95D39ED4C6CDAcastleamber@130.133.1.4
I.d.d. Er zat een fout in mijn .htaccess, maar ook in de httpd.conf moest
het nodige veranderd worden. De optie AllowOverride stond op None en in het
VirtualHost gedeelte moest er bij options nog FollowSymLinks komen te staan.
Maar nu werkt het grotendeels
Het gedeelte met ErrorDocument moet nog opgelost worden...
--
# Reply at the bottom and on a empty line, not behind any >>> sign #
I only read mail sent to the adres at the bottom.
Mike@Familie-Smit(punt)nl (vervang (punt) voor een .)
John Bokma
04/01/05, 19:05
Obiku wrote:
> John Bokma wrote:
[snip]
>> msgid: Xns95D39ED4C6CDAcastleamber@130.133.1.4
>
> I.d.d. Er zat een fout in mijn .htaccess, maar ook in de httpd.conf
> moest het nodige veranderd worden.
Natuurlijk, had je gisteren mijn posting goed gelezen en gedaan wat daar
stond was je er veel eerder achter (denk ik), dat je .htaccess niet gelezen
werd.
En dan had men hier jou kunnen vertellen hoe .htaccess "aan" te zetten.
En dan had je die fout netjes ontdekt.
Zoals Rene (?) al opmerkte, het loont erg als je en de reakties goed leest
(hoe onzinnig ze soms klinken (of zijn :-D ) en daar op reageert.
Ook probleemoplossen werkt beter met wat structuur :-D.
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html