Archief - ALGORITME: mod rewrite problemen

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.

Freakshow

Legacy Member
Hallo,

Ik zit al een tijd te klooien met mod rewrite en vind maar geen oplossing.

in een .htaccess heb ik dit staan:
RewriteEngine On
RewriteRule ^portfolio/(.*)/? test.php?id=$1

de url www.dns.be/portfolio/id wordt zo herschreven naar www.dns.be/test.php?id=id

De rewrite werkt perfect, variabele 'id' wordt uitgelezen, maar het probleem zit em in afbeeldingen en css.
Css wordt niet geladen en afbeeldingen verwijzen naar het verkeerde pad.
Voor afbeeldingen en css worden relatieve urls gebruikt, dus in geval van een afbeelding wordt het volledig pad www.dns.be/portfolio/id/images/img.jpg en het zou www.dns.be/images/img.jpg moeten zijn.

Kan dit opgelost worden met gebruik van relatieve paden?

frenzal

Legacy Member
makkelijkste is uw url bijhouden in een var waardat je altijd aankunt en een klein functie maken voor urls te genereren: <a href="<?= site_url("images/test.pg"); ?>">...</a>

dJeez

Legacy Member
Zet er gewoon een RewriteCond voor die test of het bestand al dan niet bestaat. Enkel indien het niet bestaat moet de RewriteRule uitgevoerd worden.

Maw, iets à la
Code:
RewriteCond %{REQUEST_FILENAME} !-f
boven je huidige RewriteRule zetten zou al kunnen helpen (afhankelijk van hoe je de images linkt uiteraard).

frenzal

Legacy Member
mja dat zoiezo, het probleem is vooral dat de path niet meer klopt omdat het lijkt of hij in een subfolder zit door de rewrites

Freakshow

Legacy Member
dJeez zei:
Zet er gewoon een RewriteCond voor die test of het bestand al dan niet bestaat. Enkel indien het niet bestaat moet de RewriteRule uitgevoerd worden.

Maw, iets à la
Code:
RewriteCond %{REQUEST_FILENAME} !-f
boven je huidige RewriteRule zetten zou al kunnen helpen (afhankelijk van hoe je de images linkt uiteraard).
dit heeft me al een stap dichter gebracht.

in men html gebruik ik bv <img src="images/bla.jpg" /> dit werkt niet, echter <img src="/images/bla.jpg" /> werkt wel. Door die extra leading slash wordt terug naar de document root verwezen.
Nu vraag ik me af als dit eventueel eleganter kan opgelost worden.
Dus in de htaccess controleren als het bestand bestaat (vb van dJeez), indien niet, er een slash voor plaatsen.

dus ik dacht simpelweg volgende te gebruiken:
RewriteRule ^portfolio/(.*)/? test.php?id=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) /$1

maar dit lijkt ook niet te werken, krijg ik internal server error, dus mod rewrite ziet daar een probleem in.

Freakshow

Legacy Member
nja laat maar, de elegantste oplossing is gewoon er een / plaatsen voor alle afbeeldingen, links, css, ....

als ik van in die subdirectory anders terug naar de index ga krijg ik iets in het genre van: www.dns.be/portfolio/test/index.php hoewel dit dan www.dns.be/index.php moet zijn. En dit valt niet op te lossen met mod rewrite.

Allesinds bedankt om mee te zoeken!

0n3Liner

Legacy Member
en al gehoord van de tag <base href="http://www.domain.com" /> ? :p
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