Pagina laad niet correct zonder https://www Misschien php of htaccess fout?
Ik heb een router welke de juiste pagina pakt uit een mapje op mijn server. Dit werkt perfect als men de site gebruikt via https://www.... en ook als iemand zonder https en www het domein typt dus bijvoorbeeld: 123gemaakt.nl ipv www.123gemaakt.nl of https://www.123gemaakt.nl Dit werkt perfect maar als men dit typt:
123gemaakt.nl/pagina/offertes-aanvragen dan wordt die redirect naar https://www.123gemaakt.nl/index.php
Weet iemand waarom dit is? Dit is de php code:
Code (php)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
function loadContent()
{
//Remove request parameters:
list($path) = explode('?', $_SERVER['REQUEST_URI']);
//Remove script path:
$path = substr($path, strlen(dirname($_SERVER['SCRIPT_NAME']))+1);
//Explode path to directories and remove empty items:
$pathInfo = array();
foreach (explode('/', $path) as $dir)
{
if (!empty($dir))
{
$pathInfo[] = urldecode($dir);
}
}
if (count($pathInfo) > 0)
{
//Remove file extension from the last element:
$last = $pathInfo[count($pathInfo)-1];
list($last) = explode('.', $last);
$pathInfo[count($pathInfo)-1] = $last;
}
$content = basename($path);
if ($content == '')
{
include './pagina/home.php';
}
elseif ($content != '')
{
$content .= '.php';
if(file_exists('./pagina/'.$content))
{
include './pagina/'.$content;
}
else
{
include './pagina/404.php';
}
}
}
?>
function loadContent()
{
//Remove request parameters:
list($path) = explode('?', $_SERVER['REQUEST_URI']);
//Remove script path:
$path = substr($path, strlen(dirname($_SERVER['SCRIPT_NAME']))+1);
//Explode path to directories and remove empty items:
$pathInfo = array();
foreach (explode('/', $path) as $dir)
{
if (!empty($dir))
{
$pathInfo[] = urldecode($dir);
}
}
if (count($pathInfo) > 0)
{
//Remove file extension from the last element:
$last = $pathInfo[count($pathInfo)-1];
list($last) = explode('.', $last);
$pathInfo[count($pathInfo)-1] = $last;
}
$content = basename($path);
if ($content == '')
{
include './pagina/home.php';
}
elseif ($content != '')
{
$content .= '.php';
if(file_exists('./pagina/'.$content))
{
include './pagina/'.$content;
}
else
{
include './pagina/404.php';
}
}
}
?>
En dit is de htaccess code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L,QSA]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L,QSA]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Code (php)
1
2
3
4
2
3
4
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Input: 123gemaakt.nl/pagina/offertes-aanvragen
De eerste rewrite rule wordt getriggerd doordat de aanroep zonder https is denk ik?
Dit zorgt voor een externe redirect naar https://123gemaakt.nl/pagina/offertes-aanvragen
Vervolgens wrodt de tweede rewrite rule getriggerd doordat de aanroep zonder www is?
Dit zorgt voor een externe redirect naar https://www.123gemaakt.nl/pagina/offertes-aanvragen
Rewrite condities zijn alleen van toepassing op de direct daaropvolgende rewrite rules als ik mij niet vergis. Voor de leesbaarheid is het misschien handig als je rewritecondities + de daarbij behorende rewrite rule in een aparte "alinea" zet, met hier wat regelovergangen omheen, zodat dit wat leesbaarder wordt en direct duidelijk is wat bij elkaar hoort...
Wat wil je dan dat er precies gebeurt?
Gewijzigd op 17/02/2016 16:43:36 door Thomas van den Heuvel
Thomas van den Heuvel op 17/02/2016 16:40:29:
Dat is toch precies zoals je hebt gedefinieerd?
Input: 123gemaakt.nl/pagina/offertes-aanvragen
De eerste rewrite rule wordt getriggerd doordat de aanroep zonder https is denk ik?
Dit zorgt voor een externe redirect naar https://123gemaakt.nl/pagina/offertes-aanvragen
Vervolgens wrodt de tweede rewrite rule getriggerd doordat de aanroep zonder www is?
Dit zorgt voor een externe redirect naar https://www.123gemaakt.nl/pagina/offertes-aanvragen
Rewrite condities zijn alleen van toepassing op de direct daaropvolgende rewrite rules als ik mij niet vergis. Voor de leesbaarheid is het misschien handig als je rewritecondities + de daarbij behorende rewrite rule in een aparte "alinea" zet, met hier wat regelovergangen omheen, zodat dit wat leesbaarder wordt en direct duidelijk is wat bij elkaar hoort...
Wat wil je dan dat er precies gebeurt?
Code (php)
1
2
3
4
2
3
4
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Input: 123gemaakt.nl/pagina/offertes-aanvragen
De eerste rewrite rule wordt getriggerd doordat de aanroep zonder https is denk ik?
Dit zorgt voor een externe redirect naar https://123gemaakt.nl/pagina/offertes-aanvragen
Vervolgens wrodt de tweede rewrite rule getriggerd doordat de aanroep zonder www is?
Dit zorgt voor een externe redirect naar https://www.123gemaakt.nl/pagina/offertes-aanvragen
Rewrite condities zijn alleen van toepassing op de direct daaropvolgende rewrite rules als ik mij niet vergis. Voor de leesbaarheid is het misschien handig als je rewritecondities + de daarbij behorende rewrite rule in een aparte "alinea" zet, met hier wat regelovergangen omheen, zodat dit wat leesbaarder wordt en direct duidelijk is wat bij elkaar hoort...
Wat wil je dan dat er precies gebeurt?
Ik wil graag dat die niet linkt naar https://www.123gemaakt.nl/index.php want dat gebeurd als je zonder https en www een bestaande pagina opvraagt
Comment alles maar eens uit en uncomment dan stap voor stap je RewriteRules + bijbehorende condities, dan zie je vanzelf waar het schip strandt?
Dat staat in feite ook op regel 17 en verder.
Daarnaast lijkt me regel 16 overbodig: "als het is /index.php, dan doe niets"
Dat zou ook gevangen moeten worden in de RewriteCond "als het een bestaande file is" op regel 17 (aangenomen dat index.php aanwezig is.
Maar begin eens met regel 2/4 te verwijderen.
Bedankt voor jullie hulp!