Beste leden,
Ten eerste wil ik jullie even bedanken voor het openen van dit topic. Als je een suggestie hebt om dit op te lossen: Graag.
Ik werk met de volgende htaccess:
Als ik:Code:Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?page=$1 [C] RewriteRule ^(.*)/(.*)/(.*)$ index.php?page=$1&$2=$3 [L,NC]
Erbij laat staan, geeft hij de volgende output:Code:RewriteRule ^(.*)$ index.php?page=$1 [C]
Terwijl de URL toch echt is:Code:Array ( [page] => index.php/werknemers [id] => 3 )
home/werknemers/id/3.
En geen index.php/werknemers.
Als ik die Rewrite-regel verwijder, geeft hij wel een goeie output:
Ik werk met het volgende pagina-systeem:Code:Array ( [page] => home/werknemers [id] => 3 )
En voor het aanroepen:Code:public static function SetPage($page) { if (!empty($page)) { if(file_exists('libs/php/pages/'.$page.'.php')) { require('libs/php/pages/'.$page.'.php'); } else { require('libs/php/pages/errors/404.php'); } } else { require('libs/php/pages/home/home.php'); } }
Kort maar krachtig: Hoe los ik het op. Ik heb werkelijk geen ideeën meer. Die regel van index.php?page=$1 is helaas wel essentieel.Code:<?php Config::SetPage($_GET['page']); ?>
Bedankt!
- Lorenzo
- HTACCESS gevecht nog niet gewonnen.
-
04-03-2010, 23:02 #1
- Berichten
- 95
- Lid sinds
- 16 Jaar
[fixed] HTACCESS gevecht nog niet gewonnen.
Laatst aangepast door Lorenzo de Kamps : 05-03-2010 om 13:16
-
04-03-2010, 23:06 #2
- Berichten
- 1.484
- Lid sinds
- 16 Jaar
Verander de volgorde van deze 2 rewrite rules eens
-
04-03-2010, 23:07 #3
- Berichten
- 95
- Lid sinds
- 16 Jaar
-
04-03-2010, 23:12 #4
- Berichten
- 1.484
- Lid sinds
- 16 Jaar
(.*) betekend alles tot het einde van de url. Een bestand zoals layout/style/stylesheet.css gaat ook herschreven worden. Om te voorkomen dat de locatie naar images/styles/scripts e.d. rewrited wordt kun je in de folder waar deze bestanden in staan een .htaccess file plaatsen met:
RewriteEngine Off
-
04-03-2010, 23:43 #5
- Berichten
- 95
- Lid sinds
- 16 Jaar
Nee. Zo hoort het juist niet te werken.
Ik heb de volgende map:
"Libs/php/pages". In deze map zitten ook nog sub-mappen. Bijvoorbeeld: "actueel" met het bestand "home.php" erin.
Nou is het de bedoeling dat hij dan de volgende URL pakt:
actueel/home
Actueel staat voor de submap, en home voor het .php bestand. Dat kan je terug zien in het pagina-script. Ik heb het juist zo aangepakt vanwege een reden, deze reden nam ik aan omdat hierbij ook het linker sub-menu voor wordt bepaald. Die wordt dus bepaald uit dezelfde $_GET['page']; include.
Als hij hem rewrite naar index.php, werkt dat sowieso niet omdat hij dan index.php include in het pagina-script, wat automatisch een foutmelding geeft. Nee, het is de bedoeling dat hij actueel/home als output geeft:
Code:Array ( [page] => actueel/home )
Als ik dus gewoon:
Code:RewriteRule ^(.*)$ index.php?page=$1 [C]
En daar zoek ik dus een oplossing voor.
-
04-03-2010, 23:54 #6
- Berichten
- 1.484
- Lid sinds
- 16 Jaar
De structuur van je concept klopt niet helemaal geloof ik? In de ene regel vraag je op de plaats van (.*) alles wat daarna komt te rewriten. In een ander gedeelte van de mod-rewrite constructie vraag je juist weer om het geheel in 3en te delen en dat vervolgens te rewriten.
Probeer eens dit (vanuit mijn hoofd, geen idee of het in de buurt komt van een werkend geheel):
Code:RewriteRule ^([^/]+)/([^/]+)/(.*)$ index.php?page=$1&$2=$3 [L] RewriteRule ^(.*)$ index.php?page=$1 [L]
Sowieso moet je bestands folders met images/scripts/styles voorzien van een .htaccess file met daarin:
Code:RewriteEngine Off
-
05-03-2010, 11:59 #7
- Berichten
- 95
- Lid sinds
- 16 Jaar
Ik ben geen htacess-expert, en heb dus gewoon wat tutorial stof gepakt en die gebruikt. Jouw htaccess werkt helaas niet:
Code:Array ( [page] => index.php )
-
05-03-2010, 12:58 #8
- Berichten
- 11
- Lid sinds
- 14 Jaar
Het probleem is dat je / gebruikt om te splitsen maar ook als variabele nummer 1.
Deze code zou moeten werken:
Code:Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)/(.+)/(.+)$ index.php?page=$1&$2=$3 [L,NC]
Code:array(2) { ["page"]=> string(15) "home/werknemers" ["id"]=> string(1) "3" }
Verwijder, is er niks aan het handje. Werkt het perfect zelfs. Het is dus gewoon zo dat mijn htaccess om één of andere reden niet goed kan samenwerken met meerdere rewriterules.
En daar zoek ik dus een oplossing voor.Laatst aangepast door G. Meijer : 05-03-2010 om 13:05 Reden: Automatisch samengevoegd.
-
05-03-2010, 13:07 #9
- Berichten
- 95
- Lid sinds
- 16 Jaar
Klopt! Die code werkt inderdaad. Maar nu is het probleem dat ik er nog een rewriterule erbij wil als er geen extra variabelen worden meegevraagd.
Als ik het zo doe dus:
Code:Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ index.php?page=$1 [L,NC] RewriteRule ^(.+)/(.+)/(.+)$ index.php?page=$1&$2=$3 [L,NC]
Code:Array ( [page] => home/werknemers/id/4 )
Code:Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)/(.+)/(.+)$ index.php?page=$1&$2=$3 [L,NC] RewriteRule ^(.+)$ index.php?page=$1 [L,NC]
Code:Array ( [page] => index.php )
-
05-03-2010, 13:10 #10
- Berichten
- 11
- Lid sinds
- 14 Jaar
Dus moet je opnieuw de conditie opgeven:
Code:Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)/(.+)/(.+)$ index.php?page=$1&$2=$3 [L,NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?page=$1 [L,C]
-
05-03-2010, 13:15 #11
- Berichten
- 95
- Lid sinds
- 16 Jaar
En dat was dus het probleem dat ik was vergeten te proberen. Ontzettend bedankt iedereen (en vooral met name G. Meijer).
Het is opgelost :).
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