Thread: .htaccess doorverwijzen pagina's
-
17-01-2010, 16:15 #1Member
- 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:
Ik maak dus voor elke pagina een regeltje dat doorverwijst naar de overeenkomstige php-pagina.PHP Code:RewriteRule ^index$ index.php
RewriteRule ^visie$ visie.php
RewriteRule ^prijzen$ prijzen.php
RewriteRule ^contact$ contact.php
RewriteRule ^prijzen/(.*)$ prijzen.php?type=$1
Nu leek het mij handiger dat in een regel te doen.
Hiervoor heb ik volgende regel gebruikt:
Die wil echter niet werken en ik krijg dan een internal server error met volgende error:PHP Code:RewriteRule ^(.*)$ /$1.php [L]
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.phpCode: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.
Ik heb er echter geen .html achter en wil dus dat hij als ik http://www.mijnwebsite.com/contact ingeef doorverwijst naar contact.phpPHP Code:RewriteRule ^(.*)?\.html$ $1.php [NC,L]
webdeveloper / gamerno votes
-
-
17-01-2010, 16:18 #2Member
- 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
-
17-01-2010, 16:30 #3Member
- Registered
- 07/11/03
- Location
- Bree
- Posts
- 6,239
- iTrader
- 158 (99%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
no votes
-
17-01-2010, 16:35 #4
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
-
17-01-2010, 16:38 #5Member
- Registered
- 07/11/03
- Location
- Bree
- Posts
- 6,239
- iTrader
- 158 (99%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
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:
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.PHP Code:RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php
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 / gamerno votes
-
17-01-2010, 16:49 #6
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
-
17-01-2010, 16:59 #7Member
- Registered
- 07/11/03
- Location
- Bree
- Posts
- 6,239
- iTrader
- 158 (99%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
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 / gamerno votes
-
17-01-2010, 17:31 #8
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
-
17-01-2010, 18:17 #9
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
-
17-01-2010, 19:40 #10
Ik doe het op mijn site als volgt
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.Code:RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^ index.php [L]no votes
-
17-01-2010, 20:26 #11Member
- 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
.
Hier heb ik wel nog een vraagje over:
ik heb nu het volgende script werkend:
Als ik jouw regels toevoeg gaat hij altijd naar index.php gaanPHP Code:RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_-]+)$ /$1.php
RewriteRule ^prijzen/(.*)$ prijzen.php?type=$1
dus
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?PHP Code:RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteRule ^([a-zA-Z0-9_-]+)$ /$1.php
RewriteRule ^prijzen/(.*)$ prijzen.php?type=$1
dus contact -> contact.php
contactblabla -> nopage.phpLast edited by sarnath; 17-01-2010 at 22:34.
webdeveloper / gamerno votes
-
18-01-2010, 00:26 #12
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
-
18-01-2010, 10:20 #13Member
- 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.
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.PHP Code:RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_-]+)$ /$1.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.phpLast edited by sarnath; 18-01-2010 at 10:45.
webdeveloper / gamerno votes
-
18-01-2010, 10:47 #14
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
-
18-01-2010, 19:20 #15Member
- Registered
- 07/11/03
- Location
- Bree
- Posts
- 6,239
- iTrader
- 158 (99%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
no votes

