2 htaccess vragen
Vraag 1)
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Bovenstaande code maakt van mijnsite.nl en http://mijnsite.nl => http://www.mijnsite.nl
Echter, stel dat iemand zou aanroepen https://mijnsite.nl, dan wil ik dat ie naar https://www.mijnsite.nl gaat. Weet iemand hoe ik dit moet doen?
Vraag 2)
<Files ~ "\.(inc|ini|php|txt)$">
order allow,deny
deny from all
</Files>
Bovenstaande code zorgt dat je geen bestanden kunt aanroepen die eindigen op inc, ini, php of txt. Echter, het bestand index.php is een uitzondering en moet wel aangeroepen kunnen worden. Weet iemand hoe ik dat voor elkaar krijg?
Alvast hartelijk dank voor de hulp!
maar voor vraag 2 zou je toch een nieuwe extensie aanvragen zoals .phpx
en dan die laten uitvoeren als index, dus index.phpx,
en de rest gewoon als .php houden. zodat die worden geblokkeerd,
misschien een idee?
Ik hou het liefst gewoon een index.php file (voor het geval m'n htaccess bestand niet werkt.) in plaats van een andere extensie aan te vragen zoals jij had bedacht.
De vraag is nu dus hoe ik een uitzondering toevoeg. Ik ben alleen niet zo thuis in reguliere expressies :-( Dat is het probleem. Maar het zou zoiets moeten worden als dit:
<Files ~ "\.(inc|ini|php|txt)$" tenzij de file gelijk is aan index.php>
order allow,deny
deny from all
</Files>
Alleen hoe krijg ik dat voor elkaar?
daar weet ik wel wat van!
ok, ik heb het tot nu toe voor elkaar gekregen dat hij alleen bij index.php true geeft
maar dan ook echt alleen index.php :P en ook al geef je 'm een andere extentie:
"/^(index\.)(?<=(inc|ini|php|txt))$/"
maar ik ben druk voor je bezig!
Toevoeging op 11/01/2011 16:54:40:
ik ben er uit!, maar ik weet niet of <Files ook de bestandnaam meegeeft:
"/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/"
iig geeft dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "text.php");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "index.php");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "indexx.php");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "text.ini");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "iindex.ini");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "iindex.blah");
?>
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "text.php");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "index.php");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "indexx.php");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "text.ini");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "iindex.ini");
echo preg_match("/^(^(index\.(inc|ini|txt)))|((^(?!index\.))[^\/]*(inc|ini|txt|php))$/", "iindex.blah");
?>
dit geeft:
101110
dus duidelijk dat bij de .blah en bij index.php hij 0 door geeft,
dus hij zou dit niet moeten blokkeren! :D
~Thomas
p.s.
je kan ook gewoon een index.txt aan maken, dit blokkeerd hij ook (als het uberhaupt werkt teminste :P)
Gewijzigd op 11/01/2011 16:57:09 door Thomas van den Bulk
Ga vanavond even testen!
Thanks alvast...!
Toevoeging op 11/01/2011 20:34:06:
Ik heb denk ik toch nog een beter oplossing gevonden... en een stuk makkelijker :)
Als ik dit eronder zet dan kan ik ook de index.php nog aanroepen.
<Files index.php>
order allow,deny
allow from all
</Files>
Nu alleen nog het antwoord op vraag 1...
succes met je andere vraag!
hier kan ik je niet mee helpen...
regex ligt me toch beter dan htaccess :P
Misschien kan je me nog helpen?
Dit heb ik nu:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Deze code maakt van mijnsite.nl en http://mijnsite.nl => http://www.mijnsite.nl
Het enige wat moet gebeuren is dat in de RewriteCond aan het begin komt te staan dat de string met https:// moet beginnen. De RewriteRule laat ik dan naar https verwijzen. Je krijgt dus zoiets dan:
RewriteCond %{HTTP_HOST} ^https://[^.]+\.[^.]+$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Het gaat om dat stukje in het groen... hoe krijg ik dat kloppend zodat ie een match vindt op https://mijnsite.nl
Heb jij een idee?
Gewijzigd op 11/01/2011 21:09:36 door Ozzie PHP
Code (php)
1
2
3
4
2
3
4
<?php
$test = preg_replace("#^(http(s|)://|)(www\.|)([^\.]+)\.([^\.]+)(\.([^\.]+)|)#i", "https://www.$4.$5$6", "thomasvdbulk.nl");
echo $test."<br />";
?>
$test = preg_replace("#^(http(s|)://|)(www\.|)([^\.]+)\.([^\.]+)(\.([^\.]+)|)#i", "https://www.$4.$5$6", "thomasvdbulk.nl");
echo $test."<br />";
?>
echo't:
https://www.thomasvdbulk.nl
Code (php)
1
2
3
4
5
6
2
3
4
5
6
https://thomasvdbulk.nl
http://www.thomasvdbulk.nl
www.thomasvdbulk.nl
http://www.thomasvdbulk.nl
ze geven allemaal dezelfde uitkomst :P
http://www.thomasvdbulk.nl
www.thomasvdbulk.nl
http://www.thomasvdbulk.nl
ze geven allemaal dezelfde uitkomst :P
jammer is het me niet gelukt met een slash / aan het eind,
anders zet je gewoon ipv "https://www.$4.$5$6" "https://www.$4.$5$6/" neer :P
hopelijk heb je hier wat aan ;)
Jammer genoeg is mijn website niet https beveiligd... :\
Gewijzigd op 11/01/2011 21:40:00 door Thomas van den Bulk
Thomas van den Bulk op 11/01/2011 21:39:14:
echo't:
https://www.thomasvdbulk.nl
(...)
Code (php)
1
2
3
4
2
3
4
<?php
$test = preg_replace("#^(http(s|)://|)(www\.|)([^\.]+)\.([^\.]+)(\.([^\.]+)|)#i", "https://www.$4.$5$6", "thomasvdbulk.nl");
echo $test."<br />";
?>
$test = preg_replace("#^(http(s|)://|)(www\.|)([^\.]+)\.([^\.]+)(\.([^\.]+)|)#i", "https://www.$4.$5$6", "thomasvdbulk.nl");
echo $test."<br />";
?>
echo't:
https://www.thomasvdbulk.nl
(...)
Sorry hoor, maar WTF moet die regex voorstellen? dat slaat echt nergens op :-X
https://thomasvdbulk.nl moet worden https://www.thomasvdbulk.nl.
Door de rewrite condition en rewrite rule die er nu al staan worden de overige varianten (die dus niet als https worden aangeroepen) omgezet naar http://www.thomasvdbulk.nl. Snap je wat ik bedoel?
Alleen in het geval dat iemand in de browser https://mijnsite.nl typt alleen dan moet hier https://www.mijnsite.nl van worden gemaakt.
Toevoeging op 11/01/2011 21:47:48:
Deze klopt al bijna ^[^.]+\.[^.]+$ alleen moet eraan worden toegevoegd dat het met https moet beginnen, maar ik kom er niet uit hoe.
Thomas, alleen Door de rewrite condition en rewrite rule die er nu al staan worden de overige varianten (die dus niet als https worden aangeroepen) omgezet naar http://www.thomasvdbulk.nl. Snap je wat ik bedoel?
Alleen in het geval dat iemand in de browser https://mijnsite.nl typt alleen dan moet hier https://www.mijnsite.nl van worden gemaakt.
Toevoeging op 11/01/2011 21:47:48:
Deze klopt al bijna ^[^.]+\.[^.]+$ alleen moet eraan worden toegevoegd dat het met https moet beginnen, maar ik kom er niet uit hoe.
miss ziet hij er daarom wat vaag uit :P
Toevoeging op 11/01/2011 22:03:11:
preg_replace("#(//)([^\.]+)\.([^\.]+)#i", "$1www.$2.$3", "https://thomasvdbulk.nl/");
maakt van:
https://thomasvdbulk.nl/
https://www.thomasvdbulk.nl/
(de (//) is omdat als ik die er niet neer zet ik www.https:// krijg)
beter? :P
https://mijnsite.nl aanroep, of ie dan uberhaupt het htacces bestand wel ziet. Ik vermoed eigenlijk van niet.. dus kan ik het ook niet testen :(
Maar in die rewrite rule moet in ieder geval "https://" terugkomen en dat zie ik in jouw code niet. In mijn htaccess bestand moet het er als volgt uit zien:
Hmmm... ik weet niet precies of het wel of niet goed is, want ik heb geen beveiligde verbinding... en ik weet niet zeker als ik Maar in die rewrite rule moet in ieder geval "https://" terugkomen en dat zie ik in jouw code niet. In mijn htaccess bestand moet het er als volgt uit zien:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Onderstaande code moet van https://mijnsite.nl maken => https://www.mijnsite.nl
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ IN DEZE REGEL MOET HTTPS:// VERWERKT WORDEN, MAAR HOE?
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
# Onderstaande maakt van mijnsite.nl en http://mijnsite.nl => http://www.mijnsite.nl
# Dit werkt prima
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ IN DEZE REGEL MOET HTTPS:// VERWERKT WORDEN, MAAR HOE?
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
# Onderstaande maakt van mijnsite.nl en http://mijnsite.nl => http://www.mijnsite.nl
# Dit werkt prima
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Gewijzigd op 11/01/2011 23:19:00 door Ozzie PHP
naar
veranderen...
Ik wil dat als iemand in de browser mijnsite.nl of http://mijnsite.nl typt... de url wordt vervangen door http://www.mijnsite.nl
Echter, in het ene specifieke geval dat iemand in de browser httpS://mijnsite.nl typt dan wil ik dat de url wordt vervangen door httpS://www.mijnsite.nl
Snap je het?