[PHP] mod_rewrite geeft een 404 error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 08-09 11:28
Ik heb weer eens ruzie met het rewriten van een URL, op localhost werkte alles perfect maar nu ik hem online zet krijg ik constant een 404 not found foutmelding. Aangezien alles morgen weer moet werken vraag ik het hier maar even, ik heb helaas niet zoveel tijd om van alles te proberen.

Mijn htaccess file ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## htaccess mijnwebsite.nl
Options Indexes FollowSymLinks MultiViews All

## Mod_rewrite settings
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

## User auth
AuthName "Restricted Access"
AuthType Basic
AuthUserFile /usr/local/blabla/htpasswd.users 
Require valid-user

## Max upload file size
php_value upload_max_filesize 10M


Oftewel alles wordt herschreven naar index.php en deze handelt het verder af, een URL ziet er bijvoorbeeld zo uit: http://subdomein.domein.nl/mijnwebsite/items en http://subdomein.domein.nl/mijnwebsite/items/edit/23

Als ik nou op een link klik krijg ik iedere keer de melding:

Not Found
The requested URL /var/www/mijnwebsite/index.php was not found on this server.
Apache/2.2.14 (Ubuntu) Server at website.nl Port 443

Wat heb ik al geprobeerd?Tot nu toe mocht niks baten, en ik heb geen flauw idee wat ik verder nog kan proberen. Dus ik hoop dat jullie me verder kunnen helpen!

Acties:
  • 0 Henk 'm!

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 11-09 20:35
en dit bestand
The requested URL /var/www/mijnwebsite/index.php was not found on this server.
bestaad wél?

...


Acties:
  • 0 Henk 'm!

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 08-09 11:28
IceM schreef op woensdag 31 augustus 2011 @ 19:11:
en dit bestand
[...]
bestaad wél?
Ja die staat er wel, heb ik al 10 keer gechecked, en heb 'm al 3x opnieuw gekopieerd.
Stond ie er maar niet, dan was het snel opgelost :)

Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Probeer eens rewritebase / ertussen te plaatsen. Ik kan me herinneren dat mij dat wel eens geholpen heeft met hetzelfde probleem.

Het stukje ?p=$1 is trouwens niet nodig, mijn rewrite is bijv niet meer dan dit:
code:
1
2
3
4
5
6
7
8
    Options +FollowSymLinks
    
    RewriteEngine On

    # bestaande mappen of bestanden
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php


//Edit: Nog even voor je gezocht. Het lijkt erop dat de / voor index.php het verschil maakt. Je moet of rewritebase gebruiken of een / voor de substitute. Anders wordt de substitute gezien als url en niet als 'local path'

//Edit: Als je er niet uit komt, zet eens de rewritelog level op 9 en plaats het resultaat van een request hier.

[ Voor 38% gewijzigd door Joolee op 31-08-2011 19:29 ]


Acties:
  • 0 Henk 'm!

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 11-09 20:35
Vinze schreef op woensdag 31 augustus 2011 @ 19:16:
[...]

Ja die staat er wel, heb ik al 10 keer gechecked, en heb 'm al 3x opnieuw gekopieerd.
Stond ie er maar niet, dan was het snel opgelost :)
Wat ik vreemd vind is dat je dit als 404 melding krijgt:
The requested URL /var/www/mijnwebsite/index.php was not found on this server.
en niet
The requested URL /index.php was not found on this server.

...


Acties:
  • 0 Henk 'm!

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 08-09 11:28
Ik heb 'm nou veranderd in:
code:
1
RewriteRule ^(.*)$ /index.php?p=$1 [QSA,L]


Alleen dan krijg ik de 404 melding "The requested URL /index.php was not found on this server.".
Dus dat was helaas niet de oplossing..
Joolee schreef op woensdag 31 augustus 2011 @ 19:19:
Het stukje ?p=$1 is trouwens niet nodig, mijn rewrite is bijv niet meer dan dit:
Ik heb dat ?p=$1 erin staan omdat ik de URL op de volgende manier explode: $url = explode("/", $_GET["p"]);
Als ik dan het eerste gedeelte van de URL wil hebben doe ik $url[0], het 2e gedeelte $url[1] enz.

Edit:
Goed, ik heb het al gevonden :)
Ik heb er nu het volgende van gemaakt:
code:
1
RewriteRule ^(.*)$ /mijnwebsite/index.php?p=$1 [QSA,L]


Blijkbaar begint .htaccess dus niet in de map waar hij staat, maar bij de server root.
Bedankt voor de hulp, die rewritebase tip zette me aan het denken en leidde tot de oplossing!

[ Voor 21% gewijzigd door Vinze op 31-08-2011 19:46 ]


Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Vinze schreef op woensdag 31 augustus 2011 @ 19:34:
Ik heb dat ?p=$1 erin staan omdat ik de URL op de volgende manier explode: $url = explode("/", $_GET["p"]);
Als ik dan het eerste gedeelte van de URL wil hebben doe ik $url\[0], het 2e gedeelte $url\[1] enz.
Je kunt $_SERVER['REQUEST_URI']; gebruiken. Je moet alleen wel zorgen dat je deze string gebruikt tot de eerste ? (als die er al is.)
Edit:
Goed, ik heb het al gevonden :)
Ik heb er nu het volgende van gemaakt:
code:
1
RewriteRule ^(.*)$ /mijnwebsite/index.php?p=$1 [QSA,L]


Blijkbaar begint .htaccess dus niet in de map waar hij staat, maar bij de server root.
Bedankt voor de hulp, die rewritebase tip zette me aan het denken en leidde tot de oplossing!
Mooi dat je het gevonden hebt, dat hadden we niet kunnen uitvinden voor je.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1