Hoi allemaal,
ik ben momenteel bezig met een eigen website waarbij ik ook zoekmachine vriendelijke URLs wil gaan toepassen. De basis van het principe is mij helemaal duidelijk maar zit ik echter met een probleempje bij het toepassen hiervan.
De opzet van mijn website gaat als volgt: http://www.mijnsite.nl/category/pagina hiervoor heb ik de volgende regels in mijn .htaccess gezet:
Dit is natuurlijk heer erg simpel opgezet en zal vast nog wel uitgebreid en verbeterd kunnen worden, maar als eerste wil ik erachter komen hoe ik mijn probleem kan tackelen!Code:Options +FollowSymLinks RewriteEngine on RewriteRule (.*)/(.*)$ /index.php?c=$1&p=$2
Als ik index.php?c=cat&p=page aanroep wordt de pagina heel mooi getoond, echter zodra ik /cat/page aanroep wordt er geen CSS stylesheet gebruikt. Dit komt natuurlijk omdat er in de folder /cat/page/css/style.css niets bestaat omdat deze in root/css/style.css zit. Maar is er geen andere optie om de stylesheet gewoon te kunnen laden naast de volledige link te gebruiken in de website?
Is er geen optie toe te voegen aan de RewriteRule dat hij bij de file includes uitgaat van de locatie van het bestand dat hij aanvraagt in plaats van de 'fake' directory waar hij naartoe probeert te gaan?
Alvast bedankt!
Aanvullend bericht:
Tevens zie ik dat mijn folders (Bijvoorbeeld /demos/signature/ nu ook worden herschreven) dit is natuurlijk niet de bedoeling indien de folder ook daadwerkelijk bestaat! Bedankt J. Buitenhuis voor de oplossing van dit aanvullend probleem!
- Hulp bij aanmaken van een .htaccess
-
30-08-2010, 14:04 #1
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Hulp bij aanmaken van een .htaccess
Laatst aangepast door Joshua de Gier : 30-08-2010 om 14:42 Reden: Automatisch samengevoegd.
-
-
30-08-2010, 14:50 #2
- Berichten
- 349
- Lid sinds
- 15 Jaar
Tevens zie ik dat mijn folders (Bijvoorbeeld /demos/signature/ nu ook worden herschreven) dit is natuurlijk niet de bedoeling indien de folder ook daadwerkelijk bestaat!
-
30-08-2010, 14:53 #3gast4966 Guest
Maak in PHP een variable aan met een root path en zet deze in elk path. Dan zal het altijd goed gaan.
-
30-08-2010, 14:56 #4
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Dat is inmiddels al opgelost door de volgende regels:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
[/code]Ik ben inmiddels zover:
[code]<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^pendo\.nl$
RewriteRule ^(.*)$ http://www.pendo.nl/$1 [R=301,L]
# negeer bestaande mappen of bestanden
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ $1/ [R=301]
RewriteRule ^(.*)/(.*)/$ pendo.php?c=$1&p=$2 [L]
</IfModule>
[werkt] de URLs zonder www. doorsturen naar de URLs met www.
[werkt] de URLs /categorie/page/ doorsturen naar pendo.php?c=categorie&p=page
[werkt] de URLs zonder slash aan het einde doorsturen naar de pagina MET slash aan het einde
[werkt niet] CSS/JS includes op pendo.php includen als js/test.js en niet als http://www.pendo.nl/js/test.js
Aanvullend bericht:
Daar heb ik inderdaad aan gedacht en zal ook mijn oplossing worden mits het niet anders mogelijk is :) Ik dacht dat er misschien een htaccess trucje was om dit te omzeilen?Laatst aangepast door Joshua de Gier : 30-08-2010 om 15:13 Reden: Automatisch samengevoegd.
-
30-08-2010, 15:02 #5
- Berichten
- 117
- Lid sinds
- 17 Jaar
Slashes toevoegen aan de pagina's zonder slash kan als volgt:
Code:RewriteCond %{REQUEST_URI} !(\.|/$) RewriteRule (.*) /$1/ [R=301,L]
Laatst aangepast door Jarno van L. : 30-08-2010 om 15:07
-
30-08-2010, 15:06 #6
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Daar krijg ik een Internal Server error mee..
-
30-08-2010, 15:08 #7
- Berichten
- 117
- Lid sinds
- 17 Jaar
Op één of andere manier zet sitedeals het als 1 regel in de code tags.
Zorg dat je de RewriteCond en RewriteRule op aparte regels zet en niet achter elkaar zoals het hier op sitedeals staat.
-
30-08-2010, 15:09 #8
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Sorry, mijn fout - had de opdeling in 2 regels niet gezien haha :) Hier tot dusver de htaccess:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^pendo\.nl$
RewriteRule ^(.*)$ http://www.pendo.nl/$1 [R=301,L]
# voeg slash aan het einde toe
RewriteCond %{REQUEST_URI} !(\.|/$)
RewriteRule (.*) /$1/ [R=301,L]
# negeer bestaande mappen of bestanden
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/(.*)/$ pendo.php?c=$1&p=$2 [L]
</IfModule>
Aanvullend bericht:
de laatste rewrite regel werkt nu helaas ook niet meer:(Laatst aangepast door Joshua de Gier : 30-08-2010 om 15:16 Reden: Automatisch samengevoegd.
-
30-08-2010, 15:20 #9
- Berichten
- 117
- Lid sinds
- 17 Jaar
Is een (.*) wildcard echt nodig voor je categorieën en pagina's? Beter is:
RewriteRule ^([a-z]+)/([a-zA-Z0-9_-]+)/$ pendo.php?c=$1&p=$2 [L]
RewriteRule \.(txt|gif|jpe?g|png|css|ico)$ - [L]
-
30-08-2010, 15:35 #10
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Deze geeft een foutmelding aan (helaas) ik gebruik onderstaande regel:
RewriteRule ^([a-z]+)/([a-zA-Z0-9_-]+)/$ pendo.php?c=$1&p=$2 [L]
En kom vervolgens op een 404 uit.
Ik heb ook deze regels geprobeerd:
RewriteRule ^([a-z]+)/([a-zA-Z0-9_-]+)/$ pendo.php?c=$1&p=$2 [L]
RewriteRule ^([a-z]+)/$ pendo.php?c=$1 [L]
RewriteRule ^(.*)/(.*)/$ pendo.php?c=$1&p=$2 [L]
RewriteRule ^(.*)/$ pendo.php?c=$1 [L]
Zodra ik de 1e of 2e variant gebruikt werkt de eerste pagina wel /welkom/ maar de volgende niet meer.
Aanvullend bericht:
Hmm iets vreemds? of logisch?
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^pendo\.nl$
RewriteRule ^(.*)$ http://www.pendo.nl/$1 [R=301,L]
# voeg slash aan het einde toe
RewriteCond %{REQUEST_URI} !(\.|/$)
RewriteRule (.*) $1/ [R=301,L]
# negeer bestaande mappen of bestanden
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^welkom/([a-zA-Z0-9_-]+)/$ pendo.php?c=welkom&p=$1 [L]
RewriteRule ^diensten/([a-zA-Z0-9_-]+)/$ pendo.php?c=diensten&p=$1 [L]
RewriteRule ^contact/([a-zA-Z0-9_-]+)/$ pendo.php?c=contact&p=$1 [L]
RewriteRule ^([a-z]+)/$ pendo.php?c=$1 [L]
</IfModule>
De hoofdcategorie paginas werken wel goed, dus
http://www.mijnsite.nl/welkom/
http://www.mijnsite.nl/diensten/
http://www.mijnsite.nl/contact/
Van de laatste 2 werken ook de subpaginas:
http://www.mijnsite.nl/diensten/webapplicaties/
http://www.mijnsite.nl/diensten/online-games/ etc..
maar bij
http://www.mijnsite.nl/welkom/wat-je-ook-maar-wils/
krijg ik een 404..
Aanvullend bericht:
Door deze regels:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
weg te halen, lijkt het te werken allemaal..Laatst aangepast door Joshua de Gier : 30-08-2010 om 16:58 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic