echo $begrüßung;
RewriteRule ^/chooselanguage(?.*)?$ /chooselanguage.php$1
Das Umleiten auf /... brachte mir neulich eine Endlosschleife ein. Der umgeschriebene interne Request wird aus dem aktuellen Verzeichnis hinaus nach "absolut sonstwo" geschickt und der Rewrite-Prozess beginnt neu. Vielleicht ist das aber im virtuellen Host anders als bei mir in der .htaccess.
RewriteRule wertet den Query-String nicht aus. Wenn du dich darauf beziehen möchtest musst du eine RewriteCond verwenden. Ansonsten gibt es das Flag [QSA], mit dem der QS an die umgeschriebene URL angehängt wird.
Jetzt möchte ich aber noch einen Zugriff auf die URL /chooselanguage.php von außen verhindern. Die Inhalte von chooselanguage.php sollen nur über die URL /chooselanguage erreicht werden können, und nicht direkt.
Wie realisiere ich das?
Mit
<Files *.php>
deny from all
</Files>
geht es nicht, da diese Regel auch auf den internen Request wirkt, und auch /chooselanguage ein 403 bekommt. Meine einzige Idee ist, in /chooselanguage.php REQUEST_URI mit SCRIPT_FILENAME zu vergleichen *) und daraufhin einen 403er header() zurückzugeben.
*) Dabei muss der QUERY_STRING beachtet werden. Am besten ist es wohl $_SERVER['SCRIPT_FILENAME'] mit parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) zu vergleichen.
echo "$verabschiedung $name";