Toon posts:

[Apache .htaccess] probleem met base-rul met mod-rewrite

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben erg nieuw met mod-rewrite onder Apache maar het begint nu aardig te lukken. Toch kom ik niet helemaal uit het volgende probleem.

In mijn .htaccess heb ik het volgende staan:
code:
1
2
RewriteEngine on
RewriteRule ^index index\.php

(en nog veel meer maar dat maakt nu even niet uit)

Deze .htaccess staat in mijn public_html folder die eigenlijk weer onder /home/username/ is ondergebracht. Als ik nu naar www.domein.nl ga dan kom ik natuurlijk in de public_html-folder terecht. Met mod-rewrite wilde ik er nu voor zorgen dat als ik naar www.domein.nl/index ga, dat dit dan eigenlijk index.php wordt (geen redirect, maar je begrijpt wat ik bedoel). Het vreemde is echter dat hij hem 'doorstuurt' naar http://www.domein.nl/home/username/public_html/index.php :? Ik dacht dit dus op te lossen met RewriteBase maar dat kreeg ik ook niet goed (volgensmij kan het niet). Iemand idee wat ik verkeerd doe, of komt dit doordat ik virtual hosting heb?

  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022
Waarom wil je dit in godsnaam met mod_rewrite doen? Het keyword is hier MultiViews :)

code:
1
2
3
geert@athena:/var/www/htdocs/tentamendb# cat index.var
URI: index.php
Content-type: application/x-httpd-cgi`

Verwijderd

Topicstarter
Waarom ik dit met mod_rewrite doe, is dat zo gek dan :P

Hieronder nog even de rest van het spul, dat was dus de reden waarom ik ook die regel in de topicstart eronder had gedrukt. Met MultiViews kan het idd ook zie ik nu, maar met mod-rewrite moet het toch ook gewoon kunnen :?
code:
1
2
3
4
5
6
RewriteRule ^index/(.*)/(.*)/(.*)/(.*)/(.*)/(.*) index\.php?id=$1&albumid=$2&groupid=$3&pid=$4&overview=$5&page=$6
RewriteRule ^index/(.*)/(.*)/(.*)/(.*)/(.*) index\.php?id=$1&albumid=$2&groupid=$3&pid=$4&overview=$5
RewriteRule ^index/(.*)/(.*)/(.*)/(.*) index\.php?id=$1&albumid=$2&groupid=$3&pid=$4
RewriteRule ^index/(.*)/(.*)/(.*) index\.php?id=$1&albumid=$2&groupid=$3
RewriteRule ^index/(.*)/(.*) index\.php?id=$1&albumid=$2
RewriteRule ^index/(.*) index\.php?id=$1


edit
wil het nu met mod_rewrite doen, anders moet ik weer mijn script aanpassen ivm gebruik van $_GET (php idd)

[ Voor 11% gewijzigd door Verwijderd op 26-08-2005 14:03 ]


  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022
Wat in ieder geval bij mij werkt is het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
gbesjes@solost:~/www/web-docs/tentamendb$ cat .htaccess
<Files ^.ht>
  order allow,deny
  deny from all
</Files>

<Files *.tpl>
  order deny,allow
  deny from all
</Files>

RewriteEngine On
RewriteRule    ^download/(\S+)    /tentamendb/download.php?id=$1        [NE]
RewriteRule    ^profile/(\d+)    /tentamendb/index.php?action=profile&uid=$1    [NE]
RewriteRule    ^profile    /tentamendb/index.php?action=profile         [NE]
RewriteRule    ^tentamen/(\S+)    /tentamendb/index.php?id=$1   [NE]
RewriteRule    ^cat/(\S+)    /tentamendb/index.php?yr=$1        [NE]
RewriteRule    ^cats    /tentamendb/index.php?action=viewcats   [NE]
RewriteRule    ^upload    /tentamendb/index.php?action=upload   [NE]
RewriteRule    ^faq    /tentamendb/index.php?action=faq         [NE]
RewriteRule    ^stats    /tentamendb/index.php?action=stats     [NE]
RewriteRule    ^search    /tentamendb/index.php?action=search   [NE]
RewriteRule    ^search/(.*)    /tentamendb/index.php?searchFor=$1       [NE]
RewriteRule    ^comment/(.*)    /tentamendb/index.php?action=post_comment&tent_id=$1    [NE]
RewriteRule    ^del/(\d+)/comment/(\d+)    /tentamendb/index.php?id=$1&del=$2   [NE]
RewriteRule    ^edit/(\d+)/comment/(\d+)    /tentamendb/index.php?id=$1&edit=$2         [NE]
RewriteRule    ^queue    /tentamendb/index.php?action=queue     [NE]
RewriteRule    ^admin    /tentamendb/index.php?action=admin     [NE]
RewriteRule    ^sessions    /tentamendb/index.php?action=sessions       [NE]
RewriteRule    ^login    /tentamendb/index.php?action=login     [NE]
RewriteRule    ^changelog$    /tentamendb/index.php?action=changelog    [NE]
RewriteRule    ^prefs$    /tentamendb/index.php?action=prefs    [NE]
RewriteRule    ^tree$    /tentamendb/index.php?action=tree      [NE]
RewriteRule    ^tentwindow$    /tentamendb/index.php?action=tentwindow  [NE]
RewriteRule    ^logout    /tentamendb/index.php?action=logout   [L,NE]


(Edit: ja, die index.php is een beetje ranzig. Het wordt dan ook allemaal herschreven :))

[ Voor 4% gewijzigd door G33rt op 26-08-2005 14:32 ]


Verwijderd

Topicstarter
G33rt schreef op vrijdag 26 augustus 2005 @ 14:31:
Wat in ieder geval bij mij werkt is het volgende:
En dat werkt dus niet bij mij :)

Misschien ben ik niet helemaal duidelijk geweest in de startpost, maar het probleem is dus dat hij er nog een aantal dirs voor gooit, waarin de .htaccess eigenlijk gewoon staat.
Voor de duidelijkheid nog even op een rij:
- de directorystructuur is als volgt: /home/username/public_html/
- de .htaccess met de rewrites staat in de map public_html
- in de .htaccess staat bv: 'RewriteRule ^index index\.php [r]'
- het probleem is dat hij bij www.domein.nl/index redirect naar www.domein.nl/home/username/public_html/index.php (ipv www.domein.nl/index.php)

edit
Ik heb even een testje gedaan door een extra folder in public_html te maken:
- de directorystructuur is als volgt: /home/username/public_html/test
- de .htaccess met de rewrites staat in de map public_html
- in de .htaccess heb ik een 'RewriteBase /test' gezet
- in de .htaccess staat bv: 'RewriteRule ^index index\.php [r]' en dat gaat nu goed :)

Volgens de handleiding van Apache moet de base-dir default op de map staan ingesteld waarin .htaccess zit. Toch gaat dit dus blijkbaar niet goed, iemand nog idee? Is het mogelijk met RewriteBase om de 'huidige map' in te stellen (dus hetzelfde als default, maar je weet maar nooit)?

[ Voor 34% gewijzigd door Verwijderd op 26-08-2005 16:29 ]