[htaccess/PHP/]Problemen met combinatie mod_rewrite+includes

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Toen ik vandaag mijn website over aan het zetten was naar een eigen lokale test server, stuitte ik op nogal wat problemen. De meeste heb ik op weten te lossen maar ik zit nog met één probleem. Wanneer ik namelijk naar de root van de server ga, gaat alles goed. Echter zodra ik naar bijvoorbeeld /category/film/ ga, gaat er iets fout. De verbinding met de mysql server kan niet gemaakt worden. Nu ben ik er achter dat de configuratie-file niet ingeladen wordt, maar waarom ben ik nog niet achter.
De opbouw is als volgt:

Alle urls worden herschreven naar index.php.
Index doet een include naar de config en daar de juiste php file en daar gaat het dus fout.

Ik krijg geen errors, zels met error reporting op -1...
Iemand een idee? :?

Acties:
  • 0 Henk 'm!

  • Donderpoes
  • Registratie: April 2011
  • Laatst online: 11-05 23:09
Al geprobeerd te includen m.b.v. een absoluut pad?

Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Donderpoes schreef op dinsdag 11 december 2012 @ 21:16:
Al geprobeerd te includen m.b.v. een absoluut pad?
Nu net geprobeerd. Het heeft geen effect. Wel lijkt het alsof de andere bestanden wel geincluded worden, behalve de config, misschien omdat deze in de submap /includes/ staat?

Acties:
  • 0 Henk 'm!

  • Xesxen
  • Registratie: Juli 2009
  • Laatst online: 22:12
probeer eens: include dirname(__FILE__).DIRECTORY_SEPARATOR.'config.php';

[ Voor 15% gewijzigd door Xesxen op 11-12-2012 21:33 ]

Rare vogel in spe


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
het lijkt nog steeds niet te werken

Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Kun je wat relevantie code laten zien? Nu is het een beetje gissen naar op welke plek het precies fout gaat. En hoe ziet je directorystructuur eruit?

Vergeet overigens niet ini_set('display_errors',1) te doen, want als dat op 0 staat zie je nog niet veel. Zie ook Errors and Logging Configuration Options.

Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
/index.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

include('includes/base.php');////werkt niet altijd
    

        ob_start();
        $url = explode("/",$_SERVER['REQUEST_URI']);
        switch ($url[1]) {
            case "category":
                include("category.php");//werken wel
                break;
            case "page":
                include("page.php");
                break;
            case "article":
                include("article.php");
                break;
            case "search":
                include("search.php");
                break;
            case "":
                include("home.php");
                break;
            default:
               error();
        }enz...


/includes/base.php
code:
1
2
3
4
5
6
7
8
9
10
11
<?php
$mysql_host = "////";
$mysql_database = "////";
$mysql_user = "////";
$mysql_password = "////";
mysql_connect($mysql_host, $mysql_user, $mysql_password) 
    or die("<h1>Error establishing database connection</h1><br />".mysql_error());
mysql_select_db($mysql_database)
    or die("<h1>Error establishing database connection</h1><br />".mysql_error());
session_start();
 enz...


/.htaccess
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /


RewriteRule ^article/([^/]+)/? / [L]
RewriteRule ^article/([^/]+) / [L]
RewriteRule ^page/([^/]+)/? / [L]
RewriteRule ^page/([^/]+) / [L]
RewriteRule ^category/([^/]+)/? / [L]
RewriteRule ^category/([^/]+) / [L]
RewriteRule ^search/([^/]+)/? / [L]
RewriteRule ^search/([^/]+) / [L]
RewriteRule ^search/$ / [L]
</IfModule>

Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

martin149 schreef op dinsdag 11 december 2012 @ 21:42:
/index.php:

/includes/base.php

/.htaccess
En hoe weet de .htaccess dat je alles naar index.php wilt laten verwijzen? Want die regel mis ik. Je zou de .htaccess overigens ook generieker op kunnen stellen, zodat je niet voor elke nieuwe pagina een nieuwe regel hoeft toe te voegen. De errorfunctie vangt eventuele verkeerde urls wel af.

Een simpel voorbeeldje:
code:
1
2
3
4
5
6
7
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

Staat de include directory overigens in de public folder of een niveau lager? Want dan moet je daar ook je pad op aanpassen. Het is wel aanbevolen om de (included) php files buiten de public map te zetten.

Acties:
  • 0 Henk 'm!

  • Donderpoes
  • Registratie: April 2011
  • Laatst online: 11-05 23:09
Ik zou eens in je apache error log kijken. Misschien word je daar wijzer uit.

Acties:
  • 0 Henk 'm!

  • wjzijderveld
  • Registratie: Augustus 2005
  • Laatst online: 23-08 10:55
Een include in PHP gaat niet langs Apache, dus .htaccess kan je uitsluiten als probleem.

Canon EOS60D | Canon 100mm f/2.8 USM | Canon 100-400mm f/4.5-5-6L | Canon 10-22mm f/3.5-4.5 USM | Canon 430EX II


  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Donderpoes schreef op dinsdag 11 december 2012 @ 22:39:
Ik zou eens in je apache error log kijken. Misschien word je daar wijzer uit.
De error log geeft geen problemen aan die relevant zijn aan dit probleem. enkel problemen met de favicon en een php notice die verder niks er mee te maken heeft.
wjzijderveld schreef op woensdag 12 december 2012 @ 12:23:
Een include in PHP gaat niet langs Apache, dus .htaccess kan je uitsluiten als probleem.
Dat weet ik, maar ik heb zelf het idee dat het te maken heeft met de request uri oid, waar door php in de war gaat.
Bee.nl schreef op dinsdag 11 december 2012 @ 21:55:
[...]

En hoe weet de .htaccess dat je alles naar index.php wilt laten verwijzen? Want die regel mis ik. Je zou de .htaccess overigens ook generieker op kunnen stellen, zodat je niet voor elke nieuwe pagina een nieuwe regel hoeft toe te voegen. De errorfunctie vangt eventuele verkeerde urls wel af.

Een simpel voorbeeldje:
code:
1
2
3
4
5
6
7
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

Staat de include directory overigens in de public folder of een niveau lager? Want dan moet je daar ook je pad op aanpassen. Het is wel aanbevolen om de (included) php files buiten de public map te zetten.
De htaccess was eerst ook generiker, maar dat heb ik ooit om een of andere duistere regen veranderd. De includes staan in de public folder, omdat ik op de server waar de site uiteindelijk op komt geen toegang heb buiten de public dir.
Ik ben op dit moment bezig om de ftp aan de praat te krijgen. at maakt het allemaal wat makkelijker.
Pagina: 1