Variablen in .htaccess

xamppgast

Blog Benutzer
Das hätte ich lieber nicht machen sollen, denn dort steht
Here's the variables I have found accessible by mod_rewrite (both documented and undocumented). A thing to note is that you can set these variables early in an .htaccess file using SetEnv, RewriteRule, Header, etc.. and they will be accessible at the end of the .htaccess file.
... und darunter auch "SCRIPT_NAME"

Ganz schön verwirrend, das Ganze!
 

xamppgast

Blog Benutzer
SCRIPT_NAME gibt es nicht und kann daher auch nicht gematched werden:
https://httpd.apache.org/docs/2.4/en...ml#rewritecond
Gerade habe ich gesehen, dass SCRIPT_NAME nicht nur unter den PHP-Variablen erscheint, sondern auch unter "Apache Environment". Also stimmt doch die Apache-Doku nicht mit der Realität überein.
Und in der Realität exstiert demnach die Variable mit korrektem Inhalt, kann aber nicht "gematched" werden.
 

Joe User

Zentrum der Macht
Gerade habe ich gesehen, dass SCRIPT_NAME nicht nur unter den PHP-Variablen erscheint, sondern auch unter "Apache Environment". Also stimmt doch die Apache-Doku nicht mit der Realität überein.
Sorry, aber Deine komischen, wilden Websites/Blogs/Whatever sind keine belastbaren Quellen, sondern Bullshit.

Die offizielle Doku spiegelt den offiziellen Sourcecode wieder:
Code:
[root@devnoip:~] # grep -rn 'SCRIPT_' httpd-2.4.34/modules/mappers/mod_rewrite.c
141:#define ENVVAR_SCRIPT_URL "SCRIPT_URL"
142:#define REDIRECT_ENVVAR_SCRIPT_URL "REDIRECT_" ENVVAR_SCRIPT_URL
143:#define ENVVAR_SCRIPT_URI "SCRIPT_URI"
2105:                else if (!strcmp(var, "SCRIPT_USER")) {
2125:                if (!strcmp(var, "SCRIPT_GROUP")) {
2190:                if (!strcmp(var, "SCRIPT_FILENAME")) {
4625:     *  add the SCRIPT_URL variable to the env. this is a bit complicated
4630:         var = apr_table_get(r->subprocess_env, REDIRECT_ENVVAR_SCRIPT_URL);
4632:             apr_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URL, r->uri);
4635:             apr_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URL, var);
4639:         var = apr_table_get(r->main->subprocess_env, ENVVAR_SCRIPT_URL);
4640:         apr_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URL, var);
4644:     *  create the SCRIPT_URI variable for the env
4656:    thisurl = apr_table_get(r->subprocess_env, ENVVAR_SCRIPT_URL);
4661:    apr_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URI, var);
[root@devnoip:~] #
Nix von SCRIPT_NAME zu finden, jedoch von allen dokumentierten SCRIPT_* Variablen...
 

danton

Debian User
Gerade habe ich gesehen, dass SCRIPT_NAME nicht nur unter den PHP-Variablen erscheint, sondern auch unter "Apache Environment". Also stimmt doch die Apache-Doku nicht mit der Realität überein.
Und in der Realität exstiert demnach die Variable mit korrektem Inhalt, kann aber nicht "gematched" werden.
Die Realtität stimmt sehr wohl mit der Doku überein. In der Apache-Doku stehen die Variablen drin, die bei einem Rewrite verwendet werden können. Da ist SCRIPT_NAME nicht dabei, da diese Variable zu dem Zeitpunkt, an dem die Rewrite-Regeln verarbeitet werden, noch nicht gesetzt ist. Das geschieht erst später, bevor Apache den Request zur weiteren Verarbeitung an PHP übergibt. Deshalt sieht PHP sie, Mod_Rewrite hingegen nicht.
Im übrigen wird auf https://www.askapache.com/htaccess/crazy-advanced-mod_rewrite-tutorial/ von dokumentierten und undokumentierten Variablen gesprochen. SCRIPT_NAME ist undokumentiert und somit nicht verläßlich nutzbar - und irgendwie kann ich den Nachweis, dass die Varibale SCRIPT_NAME schon beim Rewrite vorhanden gewesen sein soll, im dem Beitrag auf askapache.com nicht erkennen.
 

DjTom-i

Member
Ich habe keine Ahnung, die hat Joe User (das meine ich ernst!).

Ich wollte nur mal einen Anstoss geben das es evtl auch durch "nachladen" der Variable geht.

Denn das habe ich aus dem von mir geposteten Link verstanden..

Kloppt euch nicht :cool:
 

Joe User

Zentrum der Macht
Ich wollte nur mal einen Anstoss geben das es evtl auch durch "nachladen" der Variable geht.
Das funktioniert bei den Proxy-Modulen, weil dort die Variable von den Backends als Respond verfügbar gemacht wird, aber nicht bei mod_rewrite, da mod_rewrite bereits beim Request abgearbeitet wird, also weit vor dem Respond.
 

xamppgast

Blog Benutzer
@all:
Ich hoffe, Ihr versteht, dass das Ganze für einen "Fast"-Laien sehr verwirrend ist.
Ich habe (aus meiner Sicht) widersprüchliche Aussagen gelesen. Wer von Euch am besten mit der Materie vertraut ist, konnte ich natürlich nicht beurteilen.
An alle besten Dank
 

Thunderbyte

Moderator
Staff member
MOD EDIT: Beiträge, die nichts mit dem Thema zu tun haben, gelöscht.

Bitte sachlich und beim Thema bleiben, sonst muss ich weitere (Ver)warnungen aussprechen.
 
Top