.htaccess redirect
Ik heb 2 webpaginas die omzeggens identiek zijn.
Nu zou ik willen dat alle aanroepen van alle bestanden inclusief submappen doorgesluisd worden naar de andere pagina. De data kan ik daar opvangen via PHP. De tabel structuren zijn dezelfde.
Hier is mijn huidige .htaccess bestand
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ErrorDocument 401 /fouten/fout401.html
ErrorDocument 403 /fouten/fout403.html
ErrorDocument 404 /fouten/fout404.html
Header add "disablevcache" "true"
RewriteEngine On
RewriteBase /
RewriteRule ^/redirect/van/(.*)$ /redirect/naar/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^domain.be
RewriteRule (.*) http://www.domain.be/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ErrorDocument 403 /fouten/fout403.html
ErrorDocument 404 /fouten/fout404.html
Header add "disablevcache" "true"
RewriteEngine On
RewriteBase /
RewriteRule ^/redirect/van/(.*)$ /redirect/naar/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^domain.be
RewriteRule (.*) http://www.domain.be/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
De lijnen 9-10 heb ik toegevoegd maar er wordt niets doorgegeven.
Ik heb eigenlijk totaal geen ervaring net .htaccess. Ik zoek maar iets op internet en pas het aan.
lijn 5 komt van de provider.
Jan
Gewijzigd op 05/08/2021 10:45:16 door Jan R
Gewijzigd op 05/08/2021 10:52:14 door - Ariën -
Let wel. Het adres in de adresbar mag niet wijzigen.
Wijzig dit:
RewriteRule ^/redirect/van/(.*)$ /redirect/naar/$1 [R=301,L]
eens in:
RewriteRule ^redirect/van/(.*)$ https://www/domain.be/$1 [R=301,L]
RewriteRule ^redirect/1/(.*)$ https://%{HTTP_HOST}%/redirect/files/$1 [R=301,L] eveneens niet
Redirect: server geeft cliënt een 30x HTTP-respons waarna de cliënt de nieuwe URL opvraagt.
Rewrite rule: server herschrijft client request onzichtbaar naar een ander request, zodat een andere service op de server het request kan afhandelen.
Jan R op 05/08/2021 18:29:26:
Nee Ozzie werkt ook niet.
Ik zie dat er een foutje in mijn code stond. Nogmaals:
Als het niet werkt, haal dan eens die RewriteBase weg.
Als het niet werkt, wat werkt er dan niet? "Werkt niet" is een beetje nogal vaag.
beide geprobeerd. Lukt niet. Even vaag maar hoe moet ik het anders schrijven. Er wordt niets doorgesluisd.
@ward.
In mijn oorspronkelijk bericht schreef ik dan ook. Ik heb er geen verstand van :)
Hoe moet het dan wel?
Algemeen opnieuw proberen uitleggen wat ik wil
Ik heb 2 clubs met hun competitieresultaten
Nu wil ik dat welk bestand/pagina ik ook opvraag deze automatisch doorsluisd naar de andere map zodat ik niet steeds op 2 plaatsen moet vernieuwen of aanmaken en include gebruiken
De bestanden zijn dus dezelfde of verwijzen via include naar het andere momenteel maar dat is omslachtig.
Ik wil dus als ik vraag naar www.clubresultaten.be/club2/index.php alles intern maar niet op de adresbar hij www.clubresultaten.be/club1/index.php gaat lezen en uitvoeren.
In mijn php bestand kijk ik dan welke club het is en dan gebruik ik een prefix voor de tabellen.
Deze werkwijze zou volgens mij ook moeten werken met 3, 4 of zelfs met 100 clubs :) enige probleem. Ik krijg het niet werkende.
Jan
Toch even benieuwd.
DRY:
Don't
Repeat
Yourself
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
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
<?php
$url = 'http://www.clubresultaten.be/club2/index.php';
$parse = parse_url($url);
echo '<pre>' . print_r( $parse, TRUE ) . '</pre>';
$path = explode( '/', $parse['path'] );
echo '<pre>' . print_r( $path, TRUE ) . '<pre>';
echo '<pre>' . $path[1] . '</pre>';
?>
<?php
$url = 'http://www.clubresultaten.be/club1';
$parse = parse_url($url);
echo '<pre>' . print_r( $parse, TRUE ) . '</pre>';
$path = explode( '/', $parse['path'] );
echo '<pre>' . print_r( $path, TRUE ) . '<pre>';
echo '<pre>' . $path[1] . '</pre>';
?>
<?php
$url = 'http://www.clubresultaten.be';
$parse = parse_url($url);
echo '<pre>' . print_r( $parse, TRUE ) . '</pre>';
$path = explode( '/', $parse['path'] );
echo '<pre>' . print_r( $path, TRUE ) . '<pre>';
echo '<pre>' . $path[1] . '</pre>';
?>
$url = 'http://www.clubresultaten.be/club2/index.php';
$parse = parse_url($url);
echo '<pre>' . print_r( $parse, TRUE ) . '</pre>';
$path = explode( '/', $parse['path'] );
echo '<pre>' . print_r( $path, TRUE ) . '<pre>';
echo '<pre>' . $path[1] . '</pre>';
?>
<?php
$url = 'http://www.clubresultaten.be/club1';
$parse = parse_url($url);
echo '<pre>' . print_r( $parse, TRUE ) . '</pre>';
$path = explode( '/', $parse['path'] );
echo '<pre>' . print_r( $path, TRUE ) . '<pre>';
echo '<pre>' . $path[1] . '</pre>';
?>
<?php
$url = 'http://www.clubresultaten.be';
$parse = parse_url($url);
echo '<pre>' . print_r( $parse, TRUE ) . '</pre>';
$path = explode( '/', $parse['path'] );
echo '<pre>' . print_r( $path, TRUE ) . '<pre>';
echo '<pre>' . $path[1] . '</pre>';
?>
https://www.php.net/manual/en/function.parse-url.php
Gewijzigd op 06/08/2021 10:28:51 door Adoptive Solution
- Ariën - op 06/08/2021 09:28:28:
Vanwaar gebruik je genummerde directories, en vermoedelijk ook dubbele code?
Toch even benieuwd.
Toch even benieuwd.
Ik moet toch met iets testen :)
in de productie zullen het clubnamen zijn
Adoptive Solution op 06/08/2021 10:27:48:
Je zou de url kunnen ontleden en zien welke club van toepassing is.
Dat is wat ik probeer te verwezenlijken. maar eerst moet het doorverbonden worden of wat de term ook is.
Nu doe ik alles met de bestanden voor de 2° club heraanmaken met als inhoud
Code (php)
Maar ik zou het automatisch willen laten linken via welke methode dan ook.
In php heb in een include file met
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$website = $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
switch (true) {
case (
strpos($website, '/sc_post-gent/')!==false
):
define('TRNPREFIX', 'trn_');
define('clubNaam', 'Schaakclub Post-Gent 1945');
define('SPEELDAG', 2);
define('MENU', 'menu_post.php');
break;
case (
strpos($website, '/sc_de_witte_kaproen/')!==false
):
define('TRNPREFIX', 'tr2_');
define('clubNaam', 'Schaakclub De witte kaproen');
define('MENU', 'menu_wk.php');
define('SPEELDAG', 4);
break;
}
?>
$website = $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
switch (true) {
case (
strpos($website, '/sc_post-gent/')!==false
):
define('TRNPREFIX', 'trn_');
define('clubNaam', 'Schaakclub Post-Gent 1945');
define('SPEELDAG', 2);
define('MENU', 'menu_post.php');
break;
case (
strpos($website, '/sc_de_witte_kaproen/')!==false
):
define('TRNPREFIX', 'tr2_');
define('clubNaam', 'Schaakclub De witte kaproen');
define('MENU', 'menu_wk.php');
define('SPEELDAG', 4);
break;
}
?>
Gewijzigd op 06/08/2021 11:11:03 door Jan R
Niet echt. Hier sturen ze alles door naar index.php en doen daar alles in. ik wil de structuur van dorsturen enkel op 1 folder en voor alle bestanden naar dezelfde naam in een andere map.
Jan R op 06/08/2021 11:03:14:
Ik moet toch met iets testen :)
in de productie zullen het clubnamen zijn
- Ariën - op 06/08/2021 09:28:28:
Vanwaar gebruik je genummerde directories, en vermoedelijk ook dubbele code?
Toch even benieuwd.
Toch even benieuwd.
Ik moet toch met iets testen :)
in de productie zullen het clubnamen zijn
Clubnamen of nummers, beiden zijn geen goed voorbeeld van goede pragmatische code in jouw voorbeeld. Je wilt liever niet voor elke club een aparte directory aanmaken met een script erin die voor elke club haast gelijk is. Stel dat je een basale wijziging aan je site uitvoert, waarin bijvoorbeeld 262 clubs van toepassing zijn. Ga je al die scripts handmatig langs?
Waarom maak je niet één script die de clubnaam opvangt die alles dan afhandelt? Dan hoef je ook geen moeilijke fratsen uit te voeren met .htaccess.
Thomas v/d Heuvel (waar is hij gebleven?) heeft op zijn site een mooi voorbeeld staan van een mooi doorgeefluikje via een specifieke index.php-file: http://fangorn.thijma.nl/news/redirecting-all-requests-to-index-php-with-htaccess
Gewijzigd op 06/08/2021 11:43:59 door - Ariën -
Maak vervolgens een nieuw .htaccess bestand, en kijk of een van de onderstaande varianten het gewenste resultaat oplevert. (Plaats alleen deze code erin en niet de oude code die er al in stond.)
redirect/van, redirect/naar en domain.be moet je uiteraard aanpassen naar de juiste waarden.
Code (php)
1
2
3
2
3
RewriteEngine On
RewriteRule ^redirect/van/(.*)$ https://www.domain.be/redirect/naar/$1 [R=301,L]
RewriteRule ^redirect/van/(.*)$ https://www.domain.be/redirect/naar/$1 [R=301,L]
Code (php)
1
2
3
2
3
RewriteEngine On
RewriteRule ^/redirect/van/(.*)$ https://www.domain.be/redirect/naar/$1 [R=301,L]
RewriteRule ^/redirect/van/(.*)$ https://www.domain.be/redirect/naar/$1 [R=301,L]
Code (php)
1
2
3
4
2
3
4
RewriteEngine On
RewriteBase /
RewriteRule ^redirect/van/(.*)$ www.domain.be/redirect/naar/$1 [R=301,L]
RewriteBase /
RewriteRule ^redirect/van/(.*)$ www.domain.be/redirect/naar/$1 [R=301,L]
Optie 2 werkt niet. De andere opties blijken wel te werken. Echter de adresbar mag niet wijzigen en dat is bij de 3 gevallen wel zo.
Ik vond ook deze pagina: http://dk.co.nz/seo
Deze verteld zo ongeveer wat ik wil met betere termen.
Quote:
Verberg de GET parameters
Quote:
. Misschien maakt dat het duidelijker.
Maar blijkbaar ZOU ONE.COM mod_rewite niet ondersteunen en dan stopt het ook:(
Ik maakte een klein test-linkje https://www.janr.be/schaak/
Als ik op de 1° link klik gebruik ik nu https://www.janr.be/schaak/?club=sc_post-gent wat ik wil is https://www.janr.be/schaak/sc_post-gent al dan niet gevolgd door een extra / en natuurlijk de andere benodigde GETs
Jan
Maar blijkbaar ZOU ONE.COM mod_rewite niet ondersteunen en dan stopt het ook:(
Ik maakte een klein test-linkje https://www.janr.be/schaak/
Als ik op de 1° link klik gebruik ik nu https://www.janr.be/schaak/?club=sc_post-gent wat ik wil is https://www.janr.be/schaak/sc_post-gent al dan niet gevolgd door een extra / en natuurlijk de andere benodigde GETs
Jan
Staat Apache ertussen met zijn instellingen?
En zo ja, staat ook mod_rewrite vermeld?
Als Apache er niet tussenstaat, dan is het alsnog geen probleem, maar wordt het wel lastig uit te zoeken of mod_rrerite werkt.
Hoeveel ik mij niet kan indenken dat ze deze module niet ondersteunen.
Gewijzigd op 08/08/2021 09:59:28 door - Ariën -
mod_rewrite Nee
Ik vraag het hun wel eens.
https://www.janr.be/schaak dus zonder 1 of zonder 2 dat de mappen niet zichtbaar zijn op de index of pagina.
Dan krijg ik een 404. Wat hierbij ook opvalt als ik Jan R op 08/08/2021 10:49:54:
Apaceh ja
mod_rewrite Nee
Ik vraag het hun wel eens.
mod_rewrite Nee
Ik vraag het hun wel eens.
Volgens hun zoàu het moeten werken ondanks dat het in php_info niet staat.
We zien dus wel eens ik het werkende krijg onder wamp
Jan