Apache: mod_rewrite probleem(weeral)

Pagina: 1
Acties:

  • logion
  • Registratie: December 2004
  • Laatst online: 28-11 17:15
Beste tweaker,
Ik zit met een zeer irritant probleem dat ik niet verholpen krijg vandaar dat ik jullie hulp in roep.
Een situatieschets:
Ik heb een php bestand genaamd news.php met daarin de volgende code:
code:
1
2
3
4
$_GET[ "id"] = <br />
<?php
 echo $_GET["id"];
?>

In dezelfde dir staat een .htaccess bestand met daarin:
RewriteEngine on
RewriteRule ^news/(.*)$ news.php?id=$1

Nu zou je denken als ik surf naar http://server/news/5 ik de output krijg van news.php?id=5 maar niets is minder waar. Ik krijg gewoon "$_GET["id"] = " te zien met een notice dat $_GET["id"] niet geset is.
Hoe kan ik dit verhelpen?

Als ik news.php rename naar newsa.php en mijn rule aanpas en dan surf naar news/5 dan wordt deze wel mooi geresolved naar newsa.php?id=5, het is dus gelijk dat mijn rewrite rule gewoon genegeerd wordt omdat de regex en het bestand de zelfde naam hebben.
Ik heb echt al veel geprobeerd maar niets werkt, 2 verschillende namen voor de regex en de bestandsnaam wil ik liefst vermijden want ik zie dat het anders kan, tweakers.net is eigenlijk een mooi voorbeeld van wat ik wil bereiken.

Alvast bedankt & hopend op een spoedig antwoord

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Heb je multiviews aan staan?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • logion
  • Registratie: December 2004
  • Laatst online: 28-11 17:15
ik heb staan:
<Directory /var/www>
Options Indexes Includes FollowSymlinks MultiViews
....

De bestanden staan in /var/www/goplay en in de virtualhost directive staat niets van options, dus ik denk wel dat MultiViews aan staat.

  • logion
  • Registratie: December 2004
  • Laatst online: 28-11 17:15
Goh ik heb multiviews af gezet en nu werkt het precies wel, heeft dit verder nog andere nadelen?
Alvast bedankt voor het snelle antwoord, CodeCaster

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Multiviews zijn een alternatief voor wat jij wilt.

Stel je vraagt de url http://site/news/15 op, gaat apache eerst naar /news/15/index.(php/htm/html) zoeken. Kan 'ie dat niet vinden, geeft 'ie een 404: not found. Maar, als MultiViews aan staan, gaat 'ie de URL verder afzoeken. Eerst kijkt 'ie dan naar /news/15.(php/htm/html). Daarna naar /news.(php/htm/html). Net zoals de URL's hier op GoT, alles wordt afgehandeld door forum.php die in de root staat.

En in jouw geval kon MultiViews /news.php dus vinden, en riep 'ie die direct aan :)

[ Voor 8% gewijzigd door CodeCaster op 02-02-2007 22:02 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • logion
  • Registratie: December 2004
  • Laatst online: 28-11 17:15
Goh nogmaals bedankt, heb er toch wel even zitten opzoeken en wist niet dat het zo voor de hand lag.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Nog een extragratisj linkje voor je:
Verreweg de meest eenvoudige manier is om in je Apache configuratie (hetzij in httpd.conf, hetzij in een .htaccess, hetzij nog ergens anders) voor de directory waar je je php'tje hebt staan de MultiViews option aan te zetten:
code:
1
Options +MultiViews


De Apache 1.3 documentatie zegt er het volgende over:

"The effect of MultiViews is as follows: if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist, then the server reads the directory looking for files named foo.*, and effectively fakes up a type map which names all those files, assigning them the same media types and content-encodings it would have if the client had asked for one of them by name. It then chooses the best match to the client's requirements."

In PHP kun je vervolgens de binnengekomen request afhandelen met de $_SERVER [ 'REQUEST_URI' ] variabele.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • logion
  • Registratie: December 2004
  • Laatst online: 28-11 17:15
Nog 1 vraagje als ik nu surf naar http://server/news/5/ dan krijg ik mooi de inhoud te zien van news.php?id=5 maar nu zijn al mijn src attributen nietmeer correct.
Nu kan ik alles veranderen door er een / voor te zetten maar dat is nogal veel werk en ik zie hier op tweakers dat dit geen probleem vormt.(op tweakers.net is het gelijk dat men nog altijd in de root zit)

Hier een klein extract uit de access.log(maakt het wel duidelijk)
172.16.1.2 - - [02/Feb/2007:21:16:35 +0100] "GET /news/7/ HTTP/1.1" 200 9527 "http://goplay.vandenabeele.net/"
172.16.1.2 - - [02/Feb/2007:21:16:35 +0100] "GET /news/7/design/styles/main.css HTTP/1.1" 404 - "http://goplay.vandenabeele.net/news/7/" "
172.16.1.2 - - [02/Feb/2007:21:16:35 +0100] "GET /news/7/config/lightbox/lightbox.css HTTP/1.1" 404 - "http://goplay.vandenabeele.net/news/7/" "
172.16.1.2 - - [02/Feb/2007:21:16:35 +0100] "GET /news/7/config/lightbox/prototype.js HTTP/1.1" 404 - "http://goplay.vandenabeele.net/news/7/"
172.16.1.2 - - [02/Feb/2007:21:16:35 +0100] "GET /news/7/config/lightbox/scriptaculous.js?load=effects HTTP/1.1" 404 - "http://goplay.vandenabeele.net/news/$

etc.etc.

[ Voor 3% gewijzigd door logion op 02-02-2007 22:13 ]


  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:32
Hier op GoT staat dan ook het volgende in de HTML head:
quote: html
<base href="http://gathering.tweakers.net/global/templates/tweakers/">
;)

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


  • logion
  • Registratie: December 2004
  • Laatst online: 28-11 17:15
Wist niet dat dit bestond, bedankt.
Pagina: 1