Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[Apache] rewrite probleem

meneer_ed
18 antwoorden
  • Ik ben nu al een paar weken bezig met een rewrite probleem en ik kom er niet uit.
    Mijn isp heeft een tijd geleden zijn servers gemigreerd, en sinds die tijd krijg ik mijn (op het oude systeem wel werkende) rewrite rules niet meer aan de praat.
    Ik heb het probleem voorgelegd aan mijn isp, en die vertelde mij dat het nieuwe systeem anders omgaat met rewrite rules. Dit was hun antwoord:
    [quote:112e93f253]
    De oude rewriterules werkten op basis van het URL, de nieuwe werkt op basis van het pad op het filesystem.

    Voorbeeld:

    Oude situatie:

    Domein: http://test.nl/

    .htaccess:
    RewriteRule ^(.*) /test2/

    Dit zou er in de oude situatie voor moeten zorgen dat u in http://test.nl/test2…

    Nieuwe situatie op VISP:

    Domein: http://test.nl
    Locatie op harddisk: /var/www/test.nl/

    .htaccess:
    RewriteRule ^(/var/www/test.nl/)(.*) $1/test2/

    * De bovenstaande voorbeelden zijn uiteraard fictief.
    [/quote:112e93f253]
    Ik heb op alle mogelijke manieren geprobeerd om een werkende rule op te stellen, maar in het meest gunstige geval kom ik op de index.html pagina uit :o
    Weet iemand hoe ik een rewrite rule moet opstellen op basis van het pad ipv de url? En werkt dat dan ook in subdirectories?
  • Maak je gebruik van RewriteBase ?

    RewriteEngine On
    RewriteBase /var/www/test.nl/
    RewriteRule …
  • [quote:98bb0ebbe2="maIRnaairruJ"]Maak je gebruik van RewriteBase ?

    RewriteEngine On
    RewriteBase /var/www/test.nl/
    RewriteRule …[/quote:98bb0ebbe2]
    Yep, en ook zonder lukt het niet. Maar ik begrijp 1 ding ook niet. Ik kan in de mod_rewrite documentatie ook nergens iets vinden hoe je op basis van directories kunt rewriten. Of heb ik daar overheen gelezen?
  • En je weet heel zeker dat de rewrite module wel aan staat?

    En zolang het niet ingewikkelder is dan bovenstaande voorbeelden, kan het ook eenvoudig met redirect of redirectmatch. Die niet van de rewrite module afhankelijk zijn.
  • [quote:369d5ac937="gerben"]En je weet heel zeker dat de rewrite module wel aan staat?[/quote:369d5ac937]
    Ja. Als ik bewust een foute rule instel (RewriteRule ^$ main.php, dacht ik, in ieder geval een regel waarbij de server in een loopje komt ;)), dan komt de server "keurig" terug met een error. En daarbij heeft de isp mij gemeld dat ik gewoon gebruik kan maken van rewrites. En dat moet ik dan maar geloven…
  • Ik vraag me overigens af of dit ooit goed kan werken:

    RewriteRule ^(.*) /test2/

    Veroorzaakt volgens mij altijd een loop. Dit werkt wel:

    Redirect / /test2/
  • [quote:2495993ba4="gerben"]En zolang het niet ingewikkelder is dan bovenstaande voorbeelden, kan het ook eenvoudig met redirect of redirectmatch. Die niet van de rewrite module afhankelijk zijn.[/quote:2495993ba4]
    Ik lees dit net pas. Het voorbeeld komt van de isp helpdesk (?). Helaas is het wel wat ingewikkelder, en moet ik wel gebruik maken van rewrites.
  • Met een voorbeeld praat het toch wel een stuk makkelijker, denk ik.
  • [quote:172f5f21c8="gerben"]Met een voorbeeld praat het toch wel een stuk makkelijker, denk ik.[/quote:172f5f21c8]
    Je hebt gelijk.
    Ik ben bezig met een soort productcatalogus. Dit is de oorspronkelijke, werkende .htaccess:
    [code:1:172f5f21c8]
    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    # Geen directe toegang tot de volgende directories
    RewriteRule ^include/$ noaccess.php [L]
    RewriteRule ^include$ noaccess.php [L]
    RewriteRule ^cache/$ noaccess.php [L]
    RewriteRule ^cache$ noaccess.php [L]

    # Geen toegang tot .htaccess
    RewriteRule ^\.htaccess$ - [F]

    # De regels, alles gaat naar index.php
    # Deze laadt naar gelang de url en het paginanummer de juiste pagina
    RewriteRule ^info/pag/([0-9]+)/$ index.php?page=$1 [L]
    RewriteRule ^info/pag/([0-9]+)$ info/pag/$1/
    RewriteRule ^record/pag/([0-9]+)/$ index.php?page=$1 [L]
    RewriteRule ^record/pag/([0-9]+)$ record/pag/$1/
    RewriteRule ^product/pag/([0-9]+)/$ index.php?page=$1 [L]
    RewriteRule ^product/pag/([0-9]+)$ product/pag/$1/
    [/code:1:172f5f21c8]
    Ik heb een aantal functies in php gemaakt, waarmee ik vanuit een database een pagina opbouw. In index.php wordt bepaald welke functies voor een specifieke pagina moeten worden aangeroepen.
  • En welke server software (en versie daarvan) gebruikt je provider?
    Ik zie zo overigens geen vreemde dingen in je rules. Afgezien van dat sommige eenvoudig gecombineerd kunnen worden.
  • Apache/1.3.33 Debian GNU/Linux PHP/4.3.10-10.
    Ik wilde ook nog even de php configure opties meenemen, maar er zit een rot .htaccess bestand in de weg :o
  • [quote:70bd1b6f84="gerben"]
    Ik zie zo overigens geen vreemde dingen in je rules.[/quote:70bd1b6f84]
    Ik ook niet. Maar volgens mij ligt het probleem niet bij mijn rules, maar meer bij de isp.
    [quote:70bd1b6f84="gerben"]
    Afgezien van dat sommige eenvoudig gecombineerd kunnen worden.[/quote:70bd1b6f84]
    Weet ik, maar ik was er nog niet aan toe gekomen om dit te doen.
  • Word je ook iets wijzer van je error log? Of zie je daar niks.
  • Hmm ik zou toch even nogmaals contact opnemen met je provider en het specifieke geval uitleggen. Want volgens mij zou je hieraan alleen die base moeten veranderen om het geheel draaiende te krijgen.

    Ik mag overigens hopen dat .htaccess standaard al is afgeschermd?? Misschien zit die .htaccess regel zelfs de rest in de weg. Dat een aanroep naar htaccess wordt geblokeerd, al dan niet halverwege het bestand.
  • [quote:681ad3f8c3="gerben"]Word je ook iets wijzer van je error log? Of zie je daar niks.[/quote:681ad3f8c3]
    Ik heb geen toegang tot de error log, helaas.
  • [quote:fe5d8144e3="maIRnaairruJ"]Hmm ik zou toch even nogmaals contact opnemen met je provider en het specifieke geval uitleggen. Want volgens mij zou je hieraan alleen die base moeten veranderen om het geheel draaiende te krijgen.
    [/quote:fe5d8144e3]
    Dat heb ik gedaan, maar toen kwamen ze met het voorbeeldje dat ik al geplaatst heb.
    [quote:fe5d8144e3]
    Ik mag overigens hopen dat .htaccess standaard al is afgeschermd?? Misschien zit die .htaccess regel zelfs de rest in de weg. Dat een aanroep naar htaccess wordt geblokeerd, al dan niet halverwege het bestand.[/quote:fe5d8144e3]
    Ik denk niet dat deze regel in de weg zit. Ik heb dit htaccess bestand ook getest op mijn eigen server, en ik weet dat apache op mijn server standaard .htaccess afschermt. Op mijn eigen server werken de regels wel goed, trouwens.
  • Ik heb maar eens een boos mailtje gestuurd naar de provider. Toen was het binnen een dag geregeld. :o
    Voor de geinteresseerden:

    [code:1:64677bffa8]
    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase <volledig pad>

    # Geen directe toegang tot de volgende directories
    RewriteRule ^.*include$
    ecord/noaccess.php [L]
    RewriteRule ^.*include/$
    ecord/noaccess.php [L]
    RewriteRule ^.*cache/$
    ecord/noaccess.php [L]
    RewriteRule ^.*cache$
    ecord/noaccess.php [L]

    # Geen toegang tot .htaccess
    RewriteRule ^.*\.htaccess$ - [F]

    # De regels, alles gaat naar index.php
    # Deze laadt naar gelang de url en het paginanummer de juiste pagina
    RewriteRule ^/$ index.php
    RewriteRule ^.*info/pag/([0-9]+)/$
    ecord/index.php?page=$1 [L]
    [/code:1:64677bffa8]
    Ik moet dus het volledige pad naar de webroot als RewriteBase gebruiken, en voor de rewrites de directories ook meenemen (hoop wel dat ik het nu goed zeg :-? )




  • [quote:06b7d6ad44="maIRnaairruJ"]Maak je gebruik van RewriteBase ?

    RewriteEngine On
    RewriteBase /var/www/test.nl/
    RewriteRule …[/quote:06b7d6ad44]

    wat ik zei zeg maar…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.