2 htaccess vragen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

11/01/2011 11:43:47
Quote Anchor link
Wie kan me helpen met deze 2 htaccess vragen? (of misschien met 1 van de 2 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!
 
PHP hulp

PHP hulp

24/04/2024 07:16:35
 
Thomas van den Bulk

Thomas van den Bulk

11/01/2011 15:32:11
Quote Anchor link
van vraag 1 weet ik niet veel af,

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?
 
Ozzie PHP

Ozzie PHP

11/01/2011 15:42:39
Quote Anchor link
Ha, gelukkig... er reageert iemand :-)

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?
 
Thomas van den Bulk

Thomas van den Bulk

11/01/2011 16:52:30
Quote Anchor link
oh het is een expressie :P
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)
PHP script in nieuw venster Selecteer het PHP script
1
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");
?>


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
 
Ozzie PHP

Ozzie PHP

11/01/2011 17:01:38
Quote Anchor link
Hehe.. goed bezig :)
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...
 
Thomas van den Bulk

Thomas van den Bulk

11/01/2011 21:01:23
Quote Anchor link
kan ook ja :P
succes met je andere vraag!
hier kan ik je niet mee helpen...
regex ligt me toch beter dan htaccess :P
 
Ozzie PHP

Ozzie PHP

11/01/2011 21:07:56
Quote Anchor link
maar dat is ook regex he? Ik ben er alleen niet goed in :(
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
 
Thomas van den Bulk

Thomas van den Bulk

11/01/2011 21:39:14
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$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)
PHP script in nieuw venster Selecteer het PHP script
1
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


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
 

11/01/2011 21:41:52
Quote Anchor link
Thomas van den Bulk op 11/01/2011 21:39:14:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$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
 
Ozzie PHP

Ozzie PHP

11/01/2011 21:46:39
Quote Anchor link
Thomas, alleen 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 van den Bulk

Thomas van den Bulk

11/01/2011 21:47:53
Quote Anchor link
oh, vergeten te vertellen, je kan hiermee ook subdomain.domain.tld's mee matchen ;)
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
 
Ozzie PHP

Ozzie PHP

11/01/2011 23:16:32
Quote Anchor link
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 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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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]
Gewijzigd op 11/01/2011 23:19:00 door Ozzie PHP
 
Thomas van den Bulk

Thomas van den Bulk

11/01/2011 23:27:57
Quote Anchor link
... kun je niet gewoon:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

veranderen...
 
Ozzie PHP

Ozzie PHP

11/01/2011 23:53:10
Quote Anchor link
Ik denk dat je niet snapt wat ik bedoel....

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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.