.htaccess redirect
Pagina: « vorige 1 2 3 volgende »
Code (php)
1
2
3
4
5
2
3
4
5
RewriteEngine On
RewriteCond %{SCRIPT_NAME} ^/schaak/*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /schaak/(.*)/(.*) https://%{HTTP_HOST}/schaak/$2?club=$1
RewriteCond %{SCRIPT_NAME} ^/schaak/*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /schaak/(.*)/(.*) https://%{HTTP_HOST}/schaak/$2?club=$1
Echter nog steeds zonder success
Gewijzigd op 15/08/2021 09:36:47 door Jan R
"Het verste dat ik tot nog toe kom" -> Dat klinkt positief. Blijkbaar gaat er iets goed. Wat gaat er goed?
"Echter nog steeds zonder success" -> Dat klinkt negatief. Wat gaat er fout?
ik wil dit in de adresbar https://www.janr.be/schaak/club1 en https://www.janr.be/schaak/club2
club1 en 2 is natuurlijk een fictief voorbeeld.
Echter de naam van de club wil ik in een GET variable kunnen opvragen. Alles vertrekkende vanaf 1 folder https://www.janr.be/schaak/.
Ozzie PHP op 15/08/2021 16:20:18:
"Het verste dat ik tot nog toe kom" -> Dat klinkt positief. Blijkbaar gaat er iets goed. Wat gaat er goed?
Eigenlijk niets. Het doet gewoon niets!
Ozzie PHP op 15/08/2021 16:20:18:
"Echter nog steeds zonder success" -> Dat klinkt negatief. Wat gaat er fout?
Ik wou dat ik nog negatiever kon zijn want echt niets gebeurd er!
Ik werk al zoals je al sugereerde (start vanaf nul). Want er zijn nog een paar WEL werkende redirects
, forceer www en forceer https, en de foutpagina's.
Jan
https://%{HTTP_HOST}/schaak/$2?club=$1
Ik zou zeggen gebruik je gewone url ipv %HTTP_HOST% (er ontbreekt een %-teken in jouw voorbeeld), dus gewoon https://www.mijnsite.be
Daarnaast ... ik neem aan dat je je aanroep moet doorsturen naar een bestaande pagina/script?
Dus zoiets als
Je hebt dan dus een bestand verwerk.php in de map schaak staan. En in dat bestand roep je dan de GET-variabele club op. Kijk eens of dat lukt en echo die variabele.
Gewijzigd op 15/08/2021 23:37:32 door Ozzie PHP
Ozzie PHP op 15/08/2021 23:34:50:
ik neem aan dat je je aanroep moet doorsturen naar een bestaande pagina/script?
Inderdaad. Je roept altijd een pagina aan. Maar het zijn wel meerdere pagina's en het moet natuurlijk werken voor alle pagina's.
Ozzie PHP op 15/08/2021 23:34:50:
Ik zou zeggen gebruik je gewone url ipv %HTTP_HOST%
Het moet werken over meerdere domainen. Prod, test en wamp. Ik kan eens ik iets werkende heb natuurlijk kopieren naar de andere natuurlijk.
Ozzie PHP op 15/08/2021 23:34:50:
er ontbreekt een %-teken in jouw voorbeeld
Volgens https://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet/ is het enkel een %-teken vooraan. Ben je zeker. Anders is het niet te verwonderen dat het me niet lukt.
Jan
Nee, ik heb even op andere sites gekeken. Het is inderdaad maar 1 %-teken. Had me blijkbaar vergist.
Toch zou ik eerst gewoon een URL gebruiken ipv een variabele en eerst zorgen dat je het werkend krijgt. Het werkend krijgen over meerdere domeinen komt dan later wel.
>> Inderdaad. Je roept altijd een pagina aan.
Welke pagina roep jij hier dan aan?
Ik zou denken dat je zoiets moet doen als
Je roept dus echt een php-bestand aan. En in dat php-bestand (verwerk.php) vraag je dan de GET-variabele 'club' op.
Toevoeging op 16/08/2021 10:47:14:
Probeer dit nog eens een keer, maar dan met een bestaand php-bestand 'verwerk.php'.
RewriteRule ^schaak/(.*)$ https://xxxx.janr.be/schaak/index.php?club=$1 [P]
met enkel deze 2 lijnen volgt een 404.
https://xxxx lijkt me ook niet echt te bestaan :-s
Ja, Ik wil niet dat dit subdomain gekend is. vandaar xxxx, niet xxx want dat is synoniem voor porno. :)
Jan R op 17/08/2021 07:05:01:
Ja, Ik wil niet dat dit subdomain gekend is
Dan is het vast niet postfotos, postblog of iloapp want die staan gewoon in je openbare DNS-records...
Inderdaad :). De php bestanden sturen zelfs een 404 indien niet van mijn IP. Natuurlijk stel ik dit doorsturen uit tijdens mijn testen.
Jan R op 17/08/2021 07:05:01:
Ja, Ik wil niet dat dit subdomain gekend is. vandaar xxxx, niet xxx want dat is synoniem voor porno. :)
En dat is ook het synoniem voor Amsterdam. ;-)
Vooral dan de wallekes zeker?
Als je het DNS niet gebruikt voor je verborgen subdomein, hoe maken clients dan verbinding met de server? En vooral: wat doe je dan met de hostnaam in rewrite rules en redirects?
De redirect is geregeld via one.com naar het ip (a record)
Als het maar twee personen zijn, lijkt het me eenvoudiger én veiliger om de informatie te e-mailen of deze bij te houden via een gedeeld bestand op Google Drive of iets dergelijks.
Wat ik wel gzegd heb is dat het moet werken op www.janr.be/schaak en op xxxx.janr.be/schaak
Gewijzigd op 19/08/2021 11:38:49 door Jan R
test: https://www.janr.be/schaak/
Code (php)
1
2
3
4
5
6
2
3
4
5
6
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_URI} ^/schaak/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule (.*)$ /schaak/index.php?club=$1&b=$2&c=$3&d=$4&e=$5&f=$0 [l]
RewriteCond %{REQUEST_URI} ^/schaak/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule (.*)$ /schaak/index.php?club=$1&b=$2&c=$3&d=$4&e=$5&f=$0 [l]
&b=$2&c=$3&d=$4&e=$5&f=$0 is maar om te testen
Nu heb ik nog wel een paar problemen
bestandsnaam is niet altijd index.php
subfolders moeten nog werken. Deze komen nu in de $_GET['club']. vb: https://www.janr.be/schaak/sc_post-gent/ladder hier bevat $_GET['club']schaak/sc_post-gent/ladder terwijl eigenlijk bestand schaak/sc_post-gent/ladder/index.php aangeroepen moet worden.
de parameter club is niet enkel de club maar de totale folderstructuur.
andere parameters komen niet door en het kunnen er veel zijn :) trn voor toernooinummer, page voor de gevraagde pagina
Is er toch nog iemand met voldoende kennis die mij kan en wil helpen? Mijn kennis schiet echt wel te kort.
Jan
Gewijzigd op 31/08/2021 10:57:30 door Jan R
In PHP controleer ik in $_SERVER wat de url is die in de browser staat. (welk element van $_SERVER je moet hebben, moet je met var_dump($_SERVER) zelf even checken: dat verschilt wel eens per server insatallatie.
Wees er ook op bedacht dat de / niet altijd meedoet: hoort de / voor schaak nu wel of niet erbij? en sluit jouw path wel of niet met een / af?
En ik draai de check "is file" en "is directory" meestal om: als het bestaat, dan doe niets.
voorbeeld:
https://www.janr.be/schaak/sc_post-gent/ladder
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# if a directory or a file exists, use it directly and do nothing
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# otherwise if in /schaak forward it to index.php
RewriteCond /?schaak
RewriteRule (.*)$ /schaak/index.php [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# otherwise if in /schaak forward it to index.php
RewriteCond /?schaak
RewriteRule (.*)$ /schaak/index.php [L]
Toevoeging op 31/08/2021 15:32:13:
en in schaak/index.php moet je nu in $_SERVER ergens schaak/cs_post-gent/ladder kunnen vinden.
Eventuele GET parameters moeten ook gewoon uitleesbaar blijven.
ik krijg op server onderandere dit terug
Code (php)
1
2
2
[QUERY_STRING] => club=schaak/sc_post-gent&b=&c=&d=&e=&f=schaak/sc_post-gent
[REQUEST_URI] => /schaak/sc_post-gent
[REQUEST_URI] => /schaak/sc_post-gent
Ik moet dit dus verder analyseren en daar alles op verder doen bedoel je toch? String splitsen op ampersand en dan de koppelingen maken met key/value pairs, dit inclusief megelijke mappen?
Jan