Archief - custom 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.

sarnath

Legacy Member
Ik heb totnutoe altijd mod rewrite gebruikt via .htaccess in apache met rewriterules.
Nu ben ik echter een website aan het maken via een eigen rewrite.
Probleem is nu dat mijn css files, images enz niet meer werken:

In mijn .htaccess verwijs ik altijd door naar index.php aangezien deze file alles afhandelt.
Code:
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule .* /index.php

In mijn index.php file staat dan hetvolgende:

Code:
<?php include("header.php"); ?>

<!-- controleren welke pagina werd doorgegeven -->
<?php
$urlParts = explode( '/', trim($_SERVER['REQUEST_URI'], '/' ) );
$page = "";
if(empty($urlParts[0])){
	$page = "index.php";
}else{
	$page = $urlParts[0] . ".php";
}

$page_exists = 1;
if(!(file_exists($page))){
	include("errordocument_404.php");
	$page_exists = 0;
}

if($page_exists == 1){
	if(!($page === "index.php")){
		echo '<div class="pagecontent">';
		include($page);
		echo '</div>';
	}else{
		echo "frontpage";
	}
}
?>
<!-- einde controle -->

<?php include("footer.php"); ?>


de header met de verwijzing naar de css en favicon:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">  
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<base href="http://localhost">
<title>Titel van de website</title>

<meta name="description" content="omschrijving" />
<meta name="keywords" content="woorden" />
<meta name="author" content="auteur" />

<link rel="StyleSheet" href="/css/stijl.css" type="text/css" title="layout" />
<link rel = "shortcut icon" href="/bijlagen/opmaak/favicon.ico" />

</head>

<body>
<div class="header">
	header
</div>

Hij probeert nu dus ook de css files en bijlagen enz te verwijzen, maar dat moet niet. Hoe kan ik dit oplossen?

adrianhates

Legacy Member
Gebruik een base tag
In uw header :

<base href="http://uwbasisadres.be/" />

edit: ik zie da ge het al gebruikt. Alleen mist ge een slash achteraan + ge moet de map van uw project er nog achter zetten.
Of werkt ge in de root van uw localhost?

sarnath

Legacy Member
adrianhates zei:
Gebruik een base tag
In uw header :

<base href="http://uwbasisadres.be/" />

edit: ik zie da ge het al gebruikt. Alleen mist ge een slash achteraan + ge moet de map van uw project er nog achter zetten.
Of werkt ge in de root van uw localhost?

ik werk met deze test nu toevallig in mijn root ja.
localhost wil m in ieder geval nie doen bij base, maar als ik daar een bestaande website zet met een stijl dan wordt die wel gevonden :s
Mss in een submap plaatsen? alhoewel dit ook zou moeten werken..

EDIT: heb het nu als apart projectje gedaan, dus in een aparte map en nu werkt het wel :s
Zo werk ik in ieder geval altijd dus het is wel opgelost dan, alleen vreemd dat het in de root zelf niet werkte

sarnath

Legacy Member
hmz, ik weet niet hoe het kwam, maar mijn opmaak verscheen en nu krijg ik deze niet meer tevoorschijn :s.

Nog steeds hetzelfde probleem dus.

Heb als document root /var/www/selfrewrite

in mijn header;php staat nu:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">  
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<base href="http://localhost/selfrewrite/">
<title>Titel van de website</title>

<meta name="description" content="omschrijving" />
<meta name="keywords" content="woorden" />
<meta name="author" content="dotred.be" />

<link rel="StyleSheet" href="/css/stijl.css" type="text/css" title="layout" />
<link rel = "shortcut icon" href="/bijlagen/opmaak/favicon.ico" />

</head>

<body>
<div class="header">
	header
</div>

adrianhates

Legacy Member
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">  
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<base href="http://localhost/selfrewrite/">
<title>Titel van de website</title>

<meta name="description" content="omschrijving" />
<meta name="keywords" content="woorden" />
<meta name="author" content="dotred.be" />

<link rel="StyleSheet" href="css/stijl.css" type="text/css" title="layout" />
<link rel = "shortcut icon" href="bijlagen/opmaak/favicon.ico" />

</head>

De leidende slashes wegdoen bij href

Curahee Q

Legacy Member
Je kan ook rewrite conditions gebruiken. Ik gebruik deze voor hetgeen jij wilt doen.

Code:
RewriteEngine On
 
# Controleer of het geen bestaande directory is
RewriteCond %{REQUEST_FILENAME} !-d
# Controleer of het geen bestaand bestand is
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite vervolgens alles naar index.php
RewriteRule ^ index.php [L]

Hij zit dan dat style.css bestaat en hij redirect niet naar index.php.

sarnath

Legacy Member
Curahee Q zei:
Je kan ook rewrite conditions gebruiken. Ik gebruik deze voor hetgeen jij wilt doen.

Code:
RewriteEngine On
 
# Controleer of het geen bestaande directory is
RewriteCond %{REQUEST_FILENAME} !-d
# Controleer of het geen bestaand bestand is
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite vervolgens alles naar index.php
RewriteRule ^ index.php [L]

Hij zit dan dat style.css bestaat en hij redirect niet naar index.php.

inderdaad ik heb het nu op exact dezelfde manier opgelost.

Ik had dan wel het probleem dat als ik bijvoorbeeld http://www.website.be/contact/ deed deze direct werd gevonden aangezien dit ook een file was.
Ik heb dit opgelost door deze paginas in een map "pages" te zetten.

Is t zoiets dat jij ook gebruikt? dan weet ik dat ik goed zit :p

@adrianhates, zal t eens proberen, dan weet ik toch nog de oorzaak waarom t zo niet werkte :)

Curahee Q

Legacy Member
Tja, iedereen pakt het anders aan zeker.

Mijn structuur ziet er ongeveer zo uit
Code:
- httpdocs
   +-- index.php
   +-- includes
   |  +-- home.inc
   |  +-- contact.inc
   |  +-- ...
   |
   +-- style
   |  +-- style.css
   |  +-- images
   |     +-- ...
   |
   +-- class
      +-- class.eenklasse.php

Ik heb dus enkel index.php rechtstreeks in mijn httpdocs staan, voor de rest allemaal mappen. Ook zijn mijn links niet van het type http://www.website.be/contact/ maar http://www.website.be/contact.html of http://www.website.be/contact.xhtml of met 1 of ander zelfgekozen extensie.

sarnath

Legacy Member
k thx, is min of meer hoe ik werk ook.

bedankt allen voor de hulp in ieder geval.
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