Page 1 of 2 12 Last
  1. #1
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0

    .htaccess doorverwijzen pagina's

    Volgend scriptje heb ik nu werkend draaien:

    PHP Code:
    RewriteRule ^indexindex.php
    RewriteRule 
    ^visievisie.php
    RewriteRule 
    ^prijzenprijzen.php
    RewriteRule 
    ^contactcontact.php
    RewriteRule 
    ^prijzen/(.*)$ prijzen.php?type=$
    Ik maak dus voor elke pagina een regeltje dat doorverwijst naar de overeenkomstige php-pagina.
    Nu leek het mij handiger dat in een regel te doen.

    Hiervoor heb ik volgende regel gebruikt:
    PHP Code:
    RewriteRule ^(.*)$ /$1.php [L
    Die wil echter niet werken en ik krijg dan een internal server error met volgende error:
    Code:
    Sun Jan 17 14:56:24 2010] [error] [client ::1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
    Voor html-paginas lukt het wel, dus als ik achter mijn link een .html zet, bijvoorbeeld http://www.mijnwebsite.com/contact.html verwijst hij naar contact.php
    PHP Code:
    RewriteRule ^(.*)?\.html$ $1.php [NC,L
    Ik heb er echter geen .html achter en wil dus dat hij als ik http://www.mijnwebsite.com/contact ingeef doorverwijst naar contact.php
    webdeveloper / gamer
    no votes  

  2. #2
    cool_boy_ke's Avatar
    Registered
    15/11/03
    Location
    Tongeren
    Posts
    4,829
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/24
    Ken er niet zo veel van, maar probeer dit eens:
    RewriteRule ^(.*)$.* /$1.php [L]
    no votes  

  3. #3
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by cool_boy_ke View Post
    This quote is hidden because you are ignoring this member. Show
    Ken er niet zo veel van, maar probeer dit eens:
    RewriteRule ^(.*)$.* /$1.php [L]
    zelfde resultaat helaas
    webdeveloper / gamer
    no votes  

  4. #4
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    het is volgens mij een oneindige lus van doorverwijzingen.. , ik kan dat alleen niet zeker zeggen.
    Echter kan je het wel uit de fout afleiden:

    "Use 'LimitInternalRecursion' to increase the limit if necessary. "

    uit die limitInternatRecursion leid ik af dat je RewriteRule zichzelf blijft oproepen.
    no votes  

  5. #5
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by adrianhates View Post
    This quote is hidden because you are ignoring this member. Show
    het is volgens mij een oneindige lus van doorverwijzingen.. , ik kan dat alleen niet zeker zeggen.
    Inderdaad, aan de errors die ik in de logs zie staan lijkt het zo.

    Ik heb het zonet opgelost in ieder geval met volgend script:

    PHP Code:
    RewriteEngine On
    RewriteBase 
    /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d

    RewriteRule 
    ^(.*)$ /$1.php 
    Nu, ik zou evenzeer graag willen weten waarom de .html extensie wel werkt en zonder totaal niet, iemand die een idee heeft mag het nog steeds laten weten.

    Edit: ik krijg nu wel een internal server error als ik een pagina opgeef die niet bestaat in plaats dat er wordt gezegd "de pagina bestaat niet....".
    Last edited by sarnath; 17-01-2010 at 16:44.
    webdeveloper / gamer
    no votes  

  6. #6

    Registered
    30/10/08
    Location
    In my tree
    Posts
    80
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    5/5
    Uw herschreven versie voldoet ook aan de rewriterule aangezien die gewoon zoekt naar eender welke reeks van tekens. Uw voorbeeld met html werkt wel omdat de herschreven pagina niet meer voldoet aan de rewriterule omdat die op .php eindigt ipv .html.
    no votes  

  7. #7
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by GivenToFly View Post
    This quote is hidden because you are ignoring this member. Show
    Uw herschreven versie voldoet ook aan de rewriterule aangezien die gewoon zoekt naar eender welke reeks van tekens. Uw voorbeeld met html werkt wel omdat de herschreven pagina niet meer voldoet aan de rewriterule omdat die op .php eindigt ipv .html.
    ok, maar waarom zet de rule een pagina die op .html eindigt wel om in een .php pagina en een willekeurige tekenreeks niet naar een willekeurige tekenreeks + .php erachter?

    Het heeft iets met die rewritecond te maken veronderstel ik?
    Aangezien de regel in mijn laatste voorbeeld dezelfde is als in het eerste en die nu wel werkt met het toevoegen van de rewritecond.

    De internal server is er in ieder geval wel nog bij het laatste voorbeeld, waarom zegt hij niet gewoon "pagina niet gevonden" ?
    webdeveloper / gamer
    no votes  

  8. #8
    Parnakra's Avatar
    Registered
    15/04/04
    Location
    Izegem
    Posts
    6,095
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    In je nieuwe versie zal je RewriteRule pas uitgevoerd worden als alle voorafgaande RewriteConds voldaan zijn. In dit geval zegt de eerste conditie dat de naam géén bestand mag zijn en de tweede dat het géén map mag zijn.

    M.a.w. je gaat naar ~/contact, er wordt gecontroleerd of er een map of file met de naam contact is. Die is er niet, dus wordt de rewriteRule uitgevoerd -> contact.php. Als de RewriteRule nu opnieuw opgeroepen wordt voor contact.php, is niet voldaan aan de eerste rewriteCond, dus wordt de rewriteRule niet uitgevoerd.

    Waarom het in de oorspronkelijke versie met html wel werkt, is me niet meteen duidelijk.
    no votes  

  9. #9

    Registered
    30/10/08
    Location
    In my tree
    Posts
    80
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    5/5
    Quote Originally Posted by sarnath View Post
    This quote is hidden because you are ignoring this member. Show
    ok, maar waarom zet de rule een pagina die op .html eindigt wel om in een .php pagina en een willekeurige tekenreeks niet naar een willekeurige tekenreeks + .php erachter?
    Zonder html:
    input string: "abcdef" => rewrite to "abcdef.php" => rewrite to "abcdef.php.php" => rewrite to "abcdef.php.php.php" => ... endless loop

    Met html:
    input string: "abcdef.html" => rewrite to "abcdef.php" en "abcdef.php" voldoet niet meer aan de regexp ^(.*)?.html$ dus pagina wordt geopend.
    no votes  

  10. #10
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)
    Ik doe het op mijn site als volgt

    Code:
    RewriteEngine on
    
    RewriteCond %{SCRIPT_FILENAME} !-f 
    RewriteRule ^ index.php [L]
    Als de file dus niet bestaat wordt hij herleid naar index.php, aan de hand van $_SERVER['REQUEST_URI'] bepaal ik dan wat ik ga doen.
    no votes  

  11. #11
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Ok bedankt voor de zeer nutitge reacties, ben weer een heel pak beter geïnformeerd .

    Quote Originally Posted by Curahee Q View Post
    This quote is hidden because you are ignoring this member. Show
    Ik doe het op mijn site als volgt

    Code:
    RewriteEngine on
    
    RewriteCond %{SCRIPT_FILENAME} !-f 
    RewriteRule ^ index.php [L]
    Als de file dus niet bestaat wordt hij herleid naar index.php, aan de hand van $_SERVER['REQUEST_URI'] bepaal ik dan wat ik ga doen.
    Hier heb ik wel nog een vraagje over:

    ik heb nu het volgende script werkend:

    PHP Code:
    RewriteEngine On
    RewriteBase 
    /

    RewriteRule ^([a-zA-Z0-9_-]+)$ /$1.php

    RewriteRule 
    ^prijzen/(.*)$ prijzen.php?type=$
    Als ik jouw regels toevoeg gaat hij altijd naar index.php gaan

    dus


    PHP Code:
    RewriteEngine On
    RewriteBase 
    /

    RewriteCond %{SCRIPT_FILENAME} !-
    RewriteRule 
    index.php [L]

    RewriteRule ^([a-zA-Z0-9_-]+)$ /$1.php

    RewriteRule 
    ^prijzen/(.*)$ prijzen.php?type=$
    Klopt dit ? en hoe kan ik oplossen dat hij bijvoorbeeld naar een aparte pagina gaat met custom foutmelding indien die niet bestaat en anders gewoon altijd naar de juiste?
    dus contact -> contact.php
    contactblabla -> nopage.php
    Last edited by sarnath; 17-01-2010 at 22:34.
    webdeveloper / gamer
    no votes  

  12. #12
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)
    Natuurlijk gaat hij altijd naar index.php, als het bestand niet bestaat voert hij RewriteRule ^ index.php [L] uit. Ik kijk gewoon aan de hand van $_SERVER['REQUEST_URI'] waar ik zit en welke actie ik moet uitvoeren d.m.v. te splitten op /. Maar dat is mijn manier van werken natuurlijk.
    no votes  

  13. #13
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    yeps dat snap ik, maar ik bedoel dus dat ik mijn script zou willen aanpassen dat als een pagina niet bestaat dat hij naar een custom pagina met een zelfgeschreven foutmelding gaat.

    PHP Code:
    RewriteEngine On
    RewriteBase 
    /

    RewriteRule ^([a-zA-Z0-9_-]+)$ /$1.php 
    Met bovenstaand script gaat hij dus de ingegeven tekens omzetten naar de tekens.php, maar stel dat die pagina niet bestaat, dan moet hij doorverwijzen naar nopage.php.

    als ik dit erboven ga zetten:

    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule ^ index.php [L]

    gaat hij natuurlijk altijd naar index.php gaan omdat /contact niet bestaat, maar wel als contact.php
    Last edited by sarnath; 18-01-2010 at 10:45.
    webdeveloper / gamer
    no votes  

  14. #14
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    Quote Originally Posted by sarnath View Post
    This quote is hidden because you are ignoring this member. Show
    yeps dat snap ik, maar ik bedoel dus dat ik mijn script zou willen aanpassen dat als een pagina niet bestaat dat hij naar een custom pagina met een zelfgeschreven foutmelding gaat.
    Dan kan je beter een eigen 404 pagina maken..

    How to Set Up a Custom 404 File Not Found Page on your Website (thesitewizard.com)
    no votes  

  15. #15
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by adrianhates View Post
    This quote is hidden because you are ignoring this member. Show
    heb ik inderdad al bekeken, maar het probleem is dat ik dus omzet naar .php en ik dan de melding "No input file specified. " krijg, dat is geen 404-error.
    webdeveloper / gamer
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in