Archief - mod_rewrite

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Marcooo

Legacy Member
Hallo iedereen!

Ik ben nu bezig met een nieuwe website. En ik zou graag modrewrite hiervoor gebruiken. Maar ik ken er dus totaal niets van.

Ik zit met enkele vragen die hopelijk jullie kunnen oplossen.
- Wat precies moet er in mijn .htaccess bestandje?
- Hoe moet ik al mijn links gaan benoemen? Bv: index?p=home ofzo?
- Welke script moet ik precies tussen mijn pagina div zetten zodat als ik op bv
info klik er in het midden de info weergeven worden en mijn link dan bv site.be/info is?

Ik heb al op heel wat tutorials gelezen, maar deze gaan er telkens vanuit dat ik de volledige scripts ken o.d wat dus niet het geval is.

Alvast enorm bedankt!

Mvg, Marco

GivenToFly

Legacy Member
Uw htaccess bestand bevat uw rewrite-regels, hoe die eruit zien is afhankelijk van uw geval (wat naar wat moet herschreven worden) maar ze zijn van de vorm: "Rewriterule" [regexp url] [herschrijf] ([flags]). Je mag je links benoemen zoals je zelf wil. Het laatste puntje snap ik niet.

legerguy

Legacy Member
Allereest moet je ervoor zorgen dat modrewrite aangezet is. Dit is in het meeste geval wel als je een .be site hebt bij een hosting (Free hosting hebben dit niet).

.htaccess is totaal niet moeilijk om te gebruiken, dit is een voorbeeldje
Code:
RewriteEngine On
RewriteRule ^topic/(.*)/(.*).html vtopic.php?id=$1&name=$2
RewriteRule ^nieuw/(.*).html $1.php
RewriteRule ^index.html index.php

Wat zal er gebeuren. Als je topic/1/test.html intikt, zal de pagina u doorsturen naar vtopic.php?id=1&name=test. In je URL-box zal wel het eerste blijven staan.

Als je dit kent, kan je veel wegen uit. Ik heb voor mijn site ongeveer 25 RewriteRule's :drool:

Over je laatste vraag, het script mag je houden (ik zie dat jij gewoon index houd, en daar dan een andere pagina laat inladen.) Dan kan je bv volgende doen

Code:
RewriteEngine On
RewriteRule ^(.*) index.php?page=$1

Als je dan bv
Code:
http://www.url.be/overons
intikt, zal de pagina index.php?page=overons laden. Hopelijk helpt dit?

Marcooo

Legacy Member
Beste;

Ik heb dus een htaccess bestandje gemaakt met dit erin:

Code:
RewriteEngine On
RewriteRule ^(.*) index.php?page=$1

Wanneer ik nu deze upload ziet mijn site er lelijk en fraai uit, alsof hij mijn CSS negeerd:
1.jpg


Als ik het htaccess bestandje weg doe word mijn site wel goed weergeven:
2.jpg


Wilt dit zeggen dan mod_rewrite niet op mijn host werkt, of ligt het aan mijn code?:

PHP:
						<?php
							// SETTINGS 
							$query="page";
							$ext="php";
							$default="nieuws";
							$error_nietinarray="404.php";
							$error_bestandbestaatniet="Het bestand dat u wilt bekijken bestaat niet.";
							$pad=".";
							$pages = array("nieuws","info","crew","regels","zaal","netwerk","","inschrijven","inschrijvingen","betaalinfo","","media","schema");
							// EINDE SETTINGS
							// NIET VERANDEREN HIERONDER
							$page=$_GET[$query];
							if (!in_array($page, $pages))
							{
							   include ($error_nietinarray);
							}
							else
							{
							   if ($page == "")
							      {
							         include ($pad."/".$default.".".$ext);
							      }
							   elseif (!file_exists($pad."/".$page.".".$ext))
							      {
							         echo $error_bestandbestaatniet;
							      }
							   else
							      {
							         include ($pad."/".$page.".".$ext);
							      }
							}
						?>

dJeez

Legacy Member
Ook uw CSS wordt naar uw index doorverwezen door je rewrite rule. Dat los je op door een RewriteCond toe te voegen die test of het bestand dat wordt opgevraagd bestaat, en enkel indien dat niet het geval is de RewriteRule uit te voeren.

legerguy

Legacy Member
Ja, de CSS hal ik op van een url http://static...... Dus ik heb dit niet. Maar idd, doe wat dJeez zegt, en dan komt het in orde

Marcooo

Legacy Member
Da word dan

Code:
RewriteEngine On
RewriteCond
RewriteRule ^(.*) index.php?page=$1

Nu krijg ik een fout:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Iemand een ideetje?

legerguy

Legacy Member
Ik denk niet dat je zomaar RewriteCond kunt gebruiken. Ik heb het wel nog nooit gebruikt, dis ik weet het niet 100% zeker. Als je CSS file's in een map staan, worden ze meestal juist weergegeven. Staan ze natuurlijk in dezelfde map als index.php, dan niet.

Wat je bv dan wel kan doen is
Code:
RewriteRule ^(.*).css $1.css
Zorg er wel voor dat dit boven de eerste RewriteRule komt. Anders kan dit problemen opleveren. Ik spreek uit ervaring!

maar hier staan ze op een ander plaats dan de index (in de map static/css).

GivenToFly

Legacy Member
Of voeg gewoon volgende regels toe boven je bestaande rewrite-rules zodat bestaande bestanden en mappen gewoon geopend worden:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]

het.pc.schaap

Legacy Member
OF maak er gewoon absolute links van, dat werkt zoizo.
werk dan met een variabele $sitelink
en gebruik die dan om je css e.d. te linken
bijvoorbeeld:
Code:
$sitelink = "www.mijnwebsite.com/"

en dan

<? echo '<link href="'. $sitelink .'css/cssfile.css" rel="stylehseet' type="text/css" />

dat is hoe ik het meestal doe
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan