[mod_rewrite] probleem met bestaande site

Pagina: 1
Acties:
  • 776 views sinds 30-01-2008
  • Reageer

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Na het artikel op klik te hebben gelezen, besloten om me maar is te wagen aan het maken van 'mooie' , 'zoekmachine vriendelijke' url

stukje .htacces:
code:
1
2
3
4
RewriteEngine On
RewriteBase /
RewriteRule ^\.htaccess$ .htaccess  [F]
RewriteRule ^index/(.*)/?$ index.php?title=$1 [L]


Men site werkt dus op de volgende manier:
index.php?title=contact

$_REQUEST['title'] en op die manier de juiste content op halen.

Dit blijft gewoon werken na de mod_rewrite (dat was ook de bedoeling) :)
echter zijn al mijn .js, .css , afbeeldingen,... weg
door de mod_rewrite wordt geen van alle gevonden, hoe is dit op een 'snelle manier' op te lossen, moet ik alle paden absoluut maken of is er een andere oplossing mogelijk?

De artikelen die ik op internet tegenkwam spreken hier geen van alle over :)

Waarschijnlijk een zeer simpele oplossing, maar ik zie hem niet ;)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 12-12-2025
Je hebt 2 oplossingen: <base href="http://[site]/"> gebruiken, of idd de paden wijzigen.

We are shaping the future


  • FragFrog
  • Registratie: September 2001
  • Laatst online: 11-02 23:17

//edit
Hier stond onzin 8)7


Je kan ook overal absolute paden gebruiken, dus /templates/images/ in plaats van templates/images etc. Hangt vooral van de situatie af wat voor jou handig is :)

[ Voor 67% gewijzigd door FragFrog op 28-01-2008 19:11 ]

[ Site ] [ twitch ] [ jijbuis ]


Verwijderd

Je kunt natuurlijk even in PHP opgeven wat de absolute of relatieve URL is naar de "root" directory. Dat kun je met <base href="/pad/naar/site"> doen, of in elke URL.

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Kuch.

code:
1
2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


En geen relatieve URLs gebruiken. Die /index zou ik trouwens ook wegtoveren, of heb je nog meer dergelijke pagina's?

[ Voor 40% gewijzigd door CyBeR op 28-01-2008 19:13 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Sjoerd
  • Registratie: December 2003
  • Niet online
De hele site bestaat eigenlijk uit 2 paginas

index.php
en
admin.php

en nog een hoop includes en dergelijke natuurlijk


Ik probeer echter ook mijn php en html gescheiden te houden bij grote stukken html code zo heb ik bijvoorbeeld een include interface.html

Hierin staat alles op deze manier images/icons/ok.gif deze file laad ik dan in en vervang een aatal zaken met php.

Dus de urls in deze file zou ik dan allemaal moeten gaan controleren met php en vervangen door de url + basedir
om zo tot http://www.site.com/images/icons/ok.gif te komen?


Wat bedoel je precies met
code:
1
RewriteCond %{REQUEST_FILENAME} !-f

Op welke manier is dit toepasbaar?

EDIT:
na wat zoeken op google zouden de RewriteCond regels ervoor moeten zorgen dat niet alles wordt omgezet wat zich op de server bevindt, mambo gebruikt dit ook schijnbaar :)

dus

code:
1
2
3
4
5
6
7
RewriteEngine On
RewriteBase /
RewriteRule ^\.htaccess$ .htaccess  [F]

RewriteRule ^index/(.*)/?$ index.php?title=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Helaas nog zonder succes...

[ Voor 29% gewijzigd door Sjoerd op 28-01-2008 20:24 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Wizz15
  • Registratie: Januari 2004
  • Laatst online: 26-10-2022
Rewrite conditions moeten volgens mij vóór een rewrite rule komen te staan, dus je hebt de volgorde van de laatste drie regels omgedraaid als ik me niet vergis :)

Een rule moet aan bepaalde 'voorwaarden' (conditions) voldoen voordat de regel wordt toegepast. De voorwaarden moet je dus van tevoren opgeven. Als er geen voorwaarden voor de rule staan betekent dit dat de rule altijd zal worden toegepast. In dit geval dus ook als je een directory of bestand probeert aan te roepen wat op de server staat. Nu is het denk ik ook niet meer zo lastig om te bedenken waar die 'd' en 'f' voor staan ;)

[ Voor 91% gewijzigd door Wizz15 op 28-01-2008 22:29 ]

PSN: RikBruil | BFBC2 stats


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Andersom idd. En verder is het dus belangrijk dat je geen relatieve url's gebruikt want dat gaat mis op 't moment dat je een / in je url's gebruikt: voor je browser is dat een directory. Dus al je CSS url's e.d. moeten beginnen met '/', zoals '/css/style.css' enzo.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Sjoerd
  • Registratie: December 2003
  • Niet online
overigens ziet alles in mijn site er nu zo uit:

<img src="/templates/template 1/images/banner.gif" alt="Banner" />

nogmaals de .htacces
code:
1
2
3
4
5
6
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^\.htaccess$ .htaccess  [F]
RewriteRule ^index/(.*)/?$ index.php?title=$1 [L]



Echter nog geen resultaat, mijn css en afbeelding worden compleet genegeerd?
ook in een test bestandje...
(ik test overigens lokaal niet dat dat veel zou mogen uitmaken maar toch)

overigens lijken directory en file me en goede gok van mezelf ;)

Modelbouw - Alles over modelbouw, van RC tot diorama


Verwijderd

CyBeR schreef op maandag 28 januari 2008 @ 22:28:
Andersom idd. En verder is het dus belangrijk dat je geen relatieve url's gebruikt want dat gaat mis op 't moment dat je een / in je url's gebruikt: voor je browser is dat een directory. Dus al je CSS url's e.d. moeten beginnen met '/', zoals '/css/style.css' enzo.
Je kunt ook gewoon relatieve URL's nemen hoor. Dan moet je wel even een mechanisme maken dat het juiste pad bepaalt. Maar met een pad als ../../images/logo.gif is natuurlijk niets mis. Het stelt echt niets voor om dat te schrijven, maar áls je het doet, moet je het op alle URL's binnen de website/applicatie gebruiken, anders slaat het nergens op. Absolute URL's zou ik wel afraden. Je kunt dan beter een relative base href gebruiken. Of gewoon alle URL's relatief maken. Dat laatste heeft mijn voorkeur.

[edit]
Voor de duidelijkheid: met het rewriten gaat niet zoveel mis. Maar de paden naar je externe resources zoals stylesheets en afbeeldingen kloppen niet. Die worden ten opzichte van het document bepaald. Dat is niet de index.php, want het rewriten gebeurt onzichtbaar. De client weet niet wat er achter de schermen gebeurt. Maar in een URL met als pad bijvoorbeeld /nieuws/2008/januari zou je dan om relatief naar /images/logo.gif te verwijzen het pad ../../images/logo.gif moeten gebruiken. Kijk naar de slashes en verder niets. Het is gewoon een kwestie van bepalen waar de doeldirectory zoch bevindt ten opzichte van de URL.

[ Voor 26% gewijzigd door Verwijderd op 28-01-2008 22:55 ]


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Verwijderd schreef op maandag 28 januari 2008 @ 22:50:
...
Het is gewoon een kwestie van bepalen waar de doeldirectory zoch bevindt ten opzichte van de URL.
Bedankt voor de heldere uitleg als ik

<img src="../../templates/template 1/images/banner.gif" alt="Banner" />

werkt het ook gewoon goed, nadeel hiervan is natuurlijk dat het wel werkt bij

index.php/page/contact
maar niet bij
index.php/page/news/article/812

Misschien toch maar geen nette urls dan, want hier is niet tegen op te werken of wel?

Modelbouw - Alles over modelbouw, van RC tot diorama


Verwijderd

Sjoerd schreef op maandag 28 januari 2008 @ 23:04:

Bedankt voor de heldere uitleg als ik

<img src="../../templates/template 1/images/banner.gif" alt="Banner" />

werkt het ook gewoon goed, nadeel hiervan is natuurlijk dat het wel werkt bij

index.php/page/contact
maar niet bij
index.php/page/news/article/812

Misschien toch maar geen nette urls dan, want hier is niet tegen op te werken of wel?
Natuurlijk wel. Ik doe het toch ook? Je moet gewoon zorgen dat je een laag hebt waarin je de URL's bepaalt. Dat hoeft helemaal niet zo moeilijk te zijn. Zoals ik al zei is het een kwestie van slashes tellen. Als je vervolgens een goede scheiding hebt tussen functionele code en de presentatielaag is het vrij eenvoudig om dit voor elkaar te krijgen. En als je het op zijn makkelijkst wilt doen, gebruik je gewoon base href.

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Verwijderd schreef op maandag 28 januari 2008 @ 22:50:
[...]

Je kunt ook gewoon relatieve URL's nemen hoor. Dan moet je wel even een mechanisme maken dat het juiste pad bepaalt. Maar met een pad als ../../images/logo.gif is natuurlijk niets mis. Het stelt echt niets voor om dat te schrijven, maar áls je het doet, moet je het op alle URL's binnen de website/applicatie gebruiken, anders slaat het nergens op. Absolute URL's zou ik wel afraden. Je kunt dan beter een relative base href gebruiken. Of gewoon alle URL's relatief maken. Dat laatste heeft mijn voorkeur.
Echt netjes is dat niet, imo.

En het houdt in dat je code moet toevoegen. Het makkelijkst en minste werk is gewoon absolute url's gebruiken.

[ Voor 7% gewijzigd door CyBeR op 28-01-2008 23:10 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

CyBeR schreef op maandag 28 januari 2008 @ 23:09:

Echt netjes is dat niet, imo.

En het houdt in dat je code moet toevoegen. Het makkelijkst en minste werk is gewoon absolute url's gebruiken.
En vervolgens werkt het niet als je het op een presentatie-CD moet zetten... Code toevoegen is niet slecht. Je moet geen absolute URL's gebruiken als dat niet nodig is. Je kent toch de "scope" van je applicatie? Zolang je erbinnen blijft, werk je relatief. Zo werkt dat op haast elk niveau. Als je de weg wilt vinden, neem je een wegenkaart van het land waar je bent, en beperk je je tot de vertrekplaats en de bestemming. Als iemand in Den Haag de weg vraagt naar Rotterdam. Ga je hem dan uitleggen hoe je vanaf Schiphol naar Rotterdam moet rijden?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Verwijderd schreef op maandag 28 januari 2008 @ 22:50:
[...]
Voor de duidelijkheid: met het rewriten gaat niet zoveel mis. Maar de paden naar je externe resources zoals stylesheets en afbeeldingen kloppen niet. Die worden ten opzichte van het document bepaald. Dat is niet de index.php, want het rewriten gebeurt onzichtbaar. De client weet niet wat er achter de schermen gebeurt. Maar in een URL met als pad bijvoorbeeld /nieuws/2008/januari zou je dan om relatief naar /images/logo.gif te verwijzen het pad ../../images/logo.gif moeten gebruiken. Kijk naar de slashes en verder niets. Het is gewoon een kwestie van bepalen waar de doeldirectory zoch bevindt ten opzichte van de URL.
Ondertussen alles perfect werkend gekregen, gelukkig is mijn site gebaseerd op mijn cms die werkt met 1 template file, het was dus een kwestie van een base href toe te voegen.

Dan aan de php kant:

klik

Volgende tutorial gevolgt en aangepast zodat hij aan mijn node voldeed ;) super! ziet er toch een stuk mooier uit die url op deze manier, of het nu ook echt beter is voor de zoekresultaten van bv google zal de toekomst uitwijzen :+


EDIT:
te vroeg blijdschap :) ik heb op mijn site een aantal divs die op display:none staan en kunnen switchen naar display:block
op volgende manier bijvoorbeeld:

HTML:
1
2
<a id="note" href="#" title="note" onClick="showDiv2('note1');
                                 hideDiv2('note2');


Maar nu wordt ik gewoon terug gestuurd naar de 'root' van mijn site door href="#" en ipv # een effectieve url schrijven is geen optie aangezien de pagina dan refreshed, hoe kan ik hiervoor een regel schrijven in mijn .htacces? of moet ik ergens anders zoeken voor een oplossing?
">

[ Voor 19% gewijzigd door Sjoerd op 29-01-2008 09:06 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 12-12-2025
Voeg achteraan de onclick "return false;" toe :)

We are shaping the future


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Alex) schreef op dinsdag 29 januari 2008 @ 14:46:
Voeg achteraan de onclick "return false;" toe :)
Helaas bied het geen oplossing, pagina veranderd nog steeds :(

Modelbouw - Alles over modelbouw, van RC tot diorama


  • _H_G_
  • Registratie: September 2002
  • Laatst online: 12:44
Sjoerd schreef op dinsdag 05 februari 2008 @ 20:00:
[...]

Helaas bied het geen oplossing, pagina veranderd nog steeds :(
Geen link naar de betreffende pagina? Of de complete broncode? Het had toch zeker moeten werken.
Pagina: 1