Toon posts:

[ALG] Path interne links

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • jw_moonshine
  • Registratie: Oktober 2009
  • Laatst online: 06-09-2022
Beste medetweakers,

Ik ben mijn eigen site aan het bouwen, maar nu loop ik eigenlijk een beetje vast en ik hoop dat jullie me verder kunnen helpen

Situatieschets:

Ik heb verschillende mappen met verschillende files daarin.Bijv:

gebruiker, admin, js, css, images.

Ook heb ik dmv .htacces rewrite rules aangemaakt, zoals bijv:

/product/id/naam/ -> product.php?id=id&naam=naam etc

Nu heb ik ook een algemeen "design" file, design.php. Deze word op elke pagina aangeroepen. In dit design staan ook links. "home, categoriën,", maar ook een login-veld.
Ook staat in dit design de head, met daarin oa verwijzingen naar js en css files.

Probleem:
De links in het design.php . Aangezien al mijn files over verschillende "levels/pagehoogtes" zitten(in verschillende mapjes dus), link ik met een absolute url (http://www.domein.com/js/script.js). Nu gaat dat an sich goed, maar in de javascript worden ajax requests gedaan. Deze worden op mijn server niet geaccepteerd als je via een absolute/directe url worden gedaan(http://www.mijndomijn.com/php/inloggen.php).
Ik kan het (http://www.mijndomein.com) niet weglaten, want dan werkt het script niet in sommige documenten.
Dus het probleem is, hoe kan ik er voor zorgen dat er automatisch genoeg "../../" voor komt te staan?

Wat heb ik zelf al gedaan/bedacht
Ik kan op elke pagina definieren in welk "level" deze zit, en dit doorgeven aan het design, welke dan weer een aparte javascript opent. Nadeel hiervan is dat je verschillende javascripts hebt, en als je een wijziging wilt doorvoeren, je alle javascripts weer moet aanpassen. Een ander nadeel is dat je handmatig op elke pagina moet kijken op welk "level" die zit, en dat per pagina aanpassen. Ook als je de .htacces veranderd oid moet dat weer veranderd worden. Nog een (kleiner)nadeel is dat er verschillende (dezelfde) javascripts gecached word door de browser, dus meer http requests, langere laadtijden.

Ook heb ik gegoogled, maar ik kom niet op de goede termen.
Het volgende heb ik al geprobeerd:
"internal path html .."
"linking intern how to"
"page directory intern html"
maar met geen van allen kom ik op het goede onderwerp..

Graag zou ik van jullie ervaringen, tips of zoekwoorden willen krijgen, zodat ik verder kan puzzelen

alvast bedankt!

Acties:
  • 0Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 30-04 00:05
Gewoon / voor je request zetten. In plaats van ../../images dus /images

Acties:
  • 0Henk 'm!

  • jw_moonshine
  • Registratie: Oktober 2009
  • Laatst online: 06-09-2022
Oke, blijkt maar weer eens dat ik te moeilijk denk en/of dat ik niet goed genoeg debug. :F

bedankt! _/-\o_

[EDIT]
Voor de mensen die dit lezen, dit werkt NIET met include en require! Daarbij moet je gewoon ../ bij gebruiken.

[Voor 36% gewijzigd door jw_moonshine op 29-05-2011 21:38]


Acties:
  • 0Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
jwkanjer schreef op zondag 29 mei 2011 @ 18:19:

[EDIT]
Voor de mensen die dit lezen, dit werkt NIET met include en require! Daarbij moet je gewoon ../ bij gebruiken.
Dat is het verschil tussen client-side en server-side.

Acties:
  • 0Henk 'm!

Anoniem: 96523

Wat ik zelf altijd doe is gebruik maken van een aantal definities, zodat ik zowel intern als extern altijd de juiste URI's gebruik.

bijvoorbeeld:
PHP:
1
2
define( 'I_ROOT', $_SERVER['DOCUMENT_ROOT'] .DIRECTORY_SEPARATOR ); // interne root, voor includes
define( 'E_ROOT', $_SERVER['SERVER_PROTOCOL'].'://'. $_SERVER['HTTP_HOST'].'/' ); // externe root, voor links en scripts


De eerste geeft altijd: "/var/www/vhosts/domain.tld/httpdocs/"
De tweede geeft: "http://domain.tld/"

Nu kun je dus altijd vanaf de root werken, zelfs wanneer de fysieke locatie wijzigt.

De oplossing door gewoon te beginnen met "/" werkt natuurlijk ook voor client-side URI's, maar vind ik persoonlijk minder mooi.

Acties:
  • 0Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Anoniem: 96523 schreef op zondag 29 mei 2011 @ 23:08:
Wat ik zelf altijd doe is gebruik maken van een aantal definities, zodat ik zowel intern als extern altijd de juiste URI's gebruik.

bijvoorbeeld:
PHP:
1
2
define( 'I_ROOT', $_SERVER['DOCUMENT_ROOT'] .DIRECTORY_SEPARATOR ); // interne root, voor includes
define( 'E_ROOT', $_SERVER['SERVER_PROTOCOL'].'://'. $_SERVER['HTTP_HOST'].'/' ); // externe root, voor links en scripts


De eerste geeft altijd: "/var/www/vhosts/domain.tld/httpdocs/"
De tweede geeft: "http://domain.tld/"

Nu kun je dus altijd vanaf de root werken, zelfs wanneer de fysieke locatie wijzigt.

De oplossing door gewoon te beginnen met "/" werkt natuurlijk ook voor client-side URI's, maar vind ik persoonlijk minder mooi.
Met jouw oplossing heeft de TS nog steeds hetzelfde probleem ;) Lees anders voor het gemak de TS eens.

@TS omdat je probleem al opgelost is even iets anders: Ik weet niet hoeveel regels je ondertussen in je .htaccess hebt staan maar ik pas zelf meestal het volgende toe:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

Daarmee herschrijf je alle URL's naar simpelweg index.php via $_SERVER['REQUEST_URI'] kun je dan opvragen welke pagina er weergegeven moet worden. Zo plaats je al die logica in PHP en hoef je je .htaccess niet meer aan te passen.

Acties:
  • 0Henk 'm!

  • jw_moonshine
  • Registratie: Oktober 2009
  • Laatst online: 06-09-2022
HuHu schreef op zondag 29 mei 2011 @ 22:21:
[...]

Dat is het verschil tussen client-side en server-side.
Oke bedankt, dat was mij nog niet duidelijk
Joolee schreef op zondag 29 mei 2011 @ 23:18:
[...]
Daarmee herschrijf je alle URL's naar simpelweg index.php via $_SERVER['REQUEST_URI'] kun je dan opvragen welke pagina er weergegeven moet worden. Zo plaats je al die logica in PHP en hoef je je .htaccess niet meer aan te passen.
Ehmm, als ik het goed begrijp werkt dat als volgt?:
ik ga naar http://www.mijndomein.tld/id/naam/
Deze redirect dan naar index.php achter de schermen.
in index.php kan ik met de request uri http://www.mijndomein.tld/id/naam/ achterhalen en daar include ik dan die pagina die dan vervolgens weergegeven word.
Het voordeel daarvan zou zijn dat je idd niet meer in je .htacces hoeft te klooien, het nadeel, lijkt mij, is dat je in je index.php een soort if else if else if constructie krijgt, en dan weer met regexen moet werken (wat je eig ook in de .htacces doet). Daarvoor is de .htacces eigenlijk wel bedoelt.
Maar aan de andere kant weer, met php kun je natuurlijk meer.
Nu ik zo zit te denken is dat wel een handige oplossing. Je kunt dan in de index.php je design neerzetten en dan de content laten afhangen van de gevraagde pagina.

bedankt voor deze tip! _/-\o_ Hier ga ik nog eens goed naar kijken.

Acties:
  • 0Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
In HTML heb je ook de base-tag voor dit soort zaken.

Acties:
  • 0Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
jwkanjer schreef op maandag 30 mei 2011 @ 00:17:

Het voordeel daarvan zou zijn dat je idd niet meer in je .htacces hoeft te klooien, het nadeel, lijkt mij, is dat je in je index.php een soort if else if else if constructie krijgt, en dan weer met regexen moet werken (wat je eig ook in de .htacces doet). Daarvoor is de .htacces eigenlijk wel bedoelt.
Of je explode op de / en je gebruikt switches of iets dergelijks.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee