(Gelöst) Apache Environment Variable SCRIPT_URI fehlt

Apache, Lighttpd, nginx, Cherokee
snd303
Posts: 10
Joined: 2007-01-18 00:26
 

(Gelöst) Apache Environment Variable SCRIPT_URI fehlt

Post by snd303 »

Folgende Pakete habe ich installiert:

Installation von Debian minimal CD (Linux version 2.6.8-3-386 (pbuilder@dl360-g3) (gcc version 3.3.5 (Debian 1:3.3.5-13)) #1 Wed Dec 6 00:38:53 UTC 2006)

apache2 (Apache/2.0.54 (Debian GNU/Linux))
mysql-server-5.0 (MySQL 5.0.32-Dotdeb_1)
php5 (PHP Version 5.2.0-0.dotdeb.3)
libapache2-mod-php5
libapache2-mod-auth-mysql
php5-mysql
phpmyadmin (phpMyAdmin 2.6.2-Debian-3sarge3)


Danach wurde über phpmyadmin eine Datenbank importiert und alle *.php Dateien in das Verzeichnis /var/www/ eingespielt.

Die Webseite läuft, die Datenbank funktioniert und alle installierten Pakete arbeiten wunderbar zusammen.

Die PHP-Seiten verwenden eine Variable namens SCRIPT_URI, diese wird allerdings nicht in den Apache Environments angezeigt wenn ich mir die Informationen über phpinfo() hole.

Wir brauchen diese Funktion damit erkannt wird was in der Adressleiste des Webbrowsers eingegeben wurde. Sollte jemand z.B. test.de und nicht http://www.test.de eingeben, wird er automatisch zu http://www.test.de weitergeleitet.

Nach tagelangem Googeln hab ich jetzt den Entschluss gefasst hier eine Frage zu posten.


Was ich bis jetzt herausgefunden habe:

Es gibt die Möglichkeit eine .htaccess Datei zu verwenden. Hat damit jemand Erfahrung?

SCRIPT_URI kommt vom Modul /usr/lib/apache2/modules/mod_rewrite.so

SCRIPT_URI ist non Standard CGI (Wird nicht standardmäßig Included?)


Die folgenden Variablen gibt es:

AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, DATE_LOCAL, DATE_GMT, DOCUMENT_NAME,DOCUMENT_ROOT, DOCUMENT_URI, FORWARDED, FROM, GATEWAY_INTERFACE, HTTP_ACCEPT, HTTP_ACCEPT_CHARSET, HTTP_ACCEPT_ENCODING, HTTP_ACCEPT_LANGUAGE, HTTP_CACHE_CONTROL, HTTP_CONNECTION, HTTP_COOKIE, HTTP_FORM, HTTP_HOST, HTTP_REFERRER, HTTP_UA_COLOR, HTTP_UA_CPU, HTTP_UA_OS, HTTP_UA_PIXELS, HTTP_USER_AGENT, HTTP_X_FORWARDED_FOR, INSTANCE_ID, LAST_MODIFIED, PAGE_COUNT, PATH, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, QUERY_STRING_UNESCAPED, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_PORT, REMOTE_USER, REQUEST_METHOD, REQUEST_URI, SCRIPT_FILENAME, SCRIPT_NAME, SCRIPT_URI, SCRIPT_URL, SERVER_ADMIN, SERVER_ADDR, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL, SERVER_SIGNATURE, SERVER_SOFTWARE, TOTAL_HITS, TZ, UNIQUE_ID, USER_NAME, VISP_DOMAIN, VISP_REMOTE_ADDR, VISP_USER

Es gibt also mehr als genug Variablen doch hat jeder unterschiedlich viele davon in seinen Environments. Was ich bis jetzt am meisten gelesen habe ist, das viele gar nicht wissen warum die SCRIPT_URI entweder da ist oder nicht.


Bei mir werden folgende Variablen angezeigt:

HTTP_ACCEPT
HTTP_ACCEPT_LANGUAGE
HTTP_ACCEPT_ENCODING
HTTP_USER_AGENT
HTTP_HOST
HTTP_CONNECTION
PATH
SERVER_SIGNATURE
SERVER_SOFTWARE
SERVER_NAME
SERVER_ADDR
SERVER_PORT
REMOTE_ADDR
DOCUMENT_ROOT
SERVER_ADMIN
SCRIPT_FILENAME
REMOTE_PORT
GATEWAY_INTERFACE
SERVER_PROTOCOL
REQUEST_METHOD
QUERY_STRING
REQUEST_URI
SCRIPT_NAME


Was ich bis jetzt gemacht habe:

Nachgesehen ob das Modul mod_rewrite unter Loaded Modules mit aufgeführt wird. Nachdem ich gesehen habe das es nicht mit aufgeführt ist, habe ich eine Verknüpfung /etc/apache2/mods-enabled/rewrite.load die sich auf die Datei /etc/apache2/mods-available/rewrite.load bezieht angelegt.
Das Modul wird jetzt mit aufgeführt, was mir aber noch keine neuen Variablen gebracht hat.


Ich habe versucht folgendes in der /etc/apache2/httpd.conf reinzuschreiben:

SetEnv SCRIPT_URL
SetEnv SCRIPT_URI

auch

SetEnv SCRIPT_URL()
SetEnv SCRIPT_URI()

oder

SetEnv $SCRIPT_URL
SetEnv $SCRIPT_URI

Die Variablen waren dann zwar in den Apache Environments hatten aber keinen Wert "no value".

Über die Funktion a2enmod nachgesehen ob alle relevanten Module mit eingebunden sind.


Daraus ergeben sich für mich folgende Fragen:

Wurden die fehlenden Variablen aus Gründen der Sicherheit nicht mit eingebunden?

Wie kann ich die Variablen die ich noch benötige in meine Aapache-Konfiguration mit aufnehmen?

Gibt es eine andere Variable die die gleiche Funktion wie die SCRIPT_URI hat? Nach vielen Benutzererfahrungen bringen aber andere Lösungen nicht die gleichen Ergebnisse.

Welche weiteren Informationen über meine Systemkonfiguration benötigt ihr?


Danke im Voraus
Last edited by snd303 on 2008-07-04 11:23, edited 1 time in total.
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: Apache Environment Variable SCRIPT_URI fehlt

Post by flo »

Den Host bekommst Du doch aus dem HTTP_HOST direkt - die Script_URI müsstest Du noch per regxp parsen - nimm doch den direkten Wert ...

Die Doku ist da nicht ganz aussagefähig, wie, wann und warum diese Werte gesetzt werden - die roten Lichter gehen bei mir nur an, wenn da "non-standard" steht. D.h. man sollte sich nicht unbedingt drauf verlassen, daß diese auch tatsächlich da sind.

Wird die URI per php verarbeitet, braucht diese Variablen im Endeffekt niemand, prinzipiell bräuchtest Du noch nicht mal rewrite selber, wenn die PHP-Seite für das Directory als Fehlerseite konfiguriert ist.

flo.
snd303
Posts: 10
Joined: 2007-01-18 00:26
 

Re: Apache Environment Variable SCRIPT_URI fehlt

Post by snd303 »

Danke für die schnelle Antwort.

Das mit dem regxp werde ich mal an jemand weitergeben der sich mit Debian besser auskennt als ich. Der hatte übrigens auch keine SCRIPT_URI drin und wusste auch nicht das es so etwas gibt.

Daraus schließe ich mal, das es nicht der offizielle Weg ist über diese Methode jemanden dorthin weiterzuleiten wo er hinsoll.

Also wenn ich dich richtig verstehe kann ich meine Fehlerseiten so einstellen das z.B. keine Errorpage erscheint, sondern das automatisch von test.de auf http://www.test.de weitergeleitet wird?

Ich werde auf jeden fall mal dran bleiben und es hier posten wenn ich mehr weis. Weil es mich schon interessiert von was es abhängt ob Apache eine Variable aufnimmt oder nicht.

Ich habe gerade gesehen wenn ich rootforum.org/ eingebe, komme ich automatisch auf http://www.rootforum.org/. Wie habt ihr das eingestellt?
Ich will hier an dieser Stelle natürlich keine Komplettlösung nur einen Hinweis nach was ich zu suchen habe um mich selbst mit dem Problem auseinanderzusetzen. :wink:

Cya
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: Apache Environment Variable SCRIPT_URI fehlt

Post by flo »

mod_rewrite ist ein Performance-Killer - ein generelles Umschreiben von "*.domain.de" auf "www.domain.de" ist relativ unsinnig.

Schau Dir mal http://httpd.apache.org/docs/2.0/mod/mod_alias.html an, da die Direktive "redirect". Wenn Du in einem virtuellen Host "domain.de" mit ServerAlias "*.domain.de" einen redirect machst, erschlägst Du sämtliche Probleme bezüglich der Domain und die Umleitung ist sauber - die Fehlerseite schlägt bei Dateiebene an, und den Fehler musst Du natürlich auch erst mal auslösen.

flo.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11185
Joined: 2003-02-27 01:00
Location: Hamburg
 

Re: Apache Environment Variable SCRIPT_URI fehlt

Post by Joe User »

snd303 wrote:Ich habe gerade gesehen wenn ich rootforum.org/ eingebe, komme ich automatisch auf http://www.rootforum.org/. Wie habt ihr das eingestellt?
Im Groben so:

Code: Select all

$HTTP["host"] =~ "(^|.)rootforum.org$" {
    $HTTP["host"] !~ "^(www|forum|wiki|faq).rootforum.org$" {
        url.redirect = (
            "^/(.*)" => "http://www.rootforum.org/",
        )
    }
### snip ###
    $HTTP["host"] == "www.rootforum.org" {
        server.name = "www.rootforum.org"
### snip ###
    }
}
Wird Dir aber nicht helfen, da wir/ich keinen Apache nutze(n) 8)
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: Apache Environment Variable SCRIPT_URI fehlt

Post by flo »

Ist aber das gleiche wie oben beschrieben ... :-)
snd303
Posts: 10
Joined: 2007-01-18 00:26
 

Re: (Gelöst) Apache Environment Variable SCRIPT_URI fehlt

Post by snd303 »

Ich hoffe euch hat meine Frage damals nicht zu sehr verwirrt. Habe jetzt schon seit längerem herausgefunden wie man die Apache Environment Variable SCRIPT_URI "heraufbeschwört". :wink:

Wenn das Modul mod_rewrite.so in Apache eingebunden ist und in einem VirtualHost der Befehl RewriteEnginge On gesetzt wurde, werden die von mir damals vermissten Variablen sichtbar.

Hierzu ein Beispiel:

Code: Select all

NameVirtualHost *:80
<VirtualHost *:80>
	RewriteEngine On

	DocumentRoot /var/www/

	<Directory />
		Options None
		AllowOverride None
		Order Deny,Allow
		Deny from All
	</Directory>

	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order Deny,Allow
		Allow from All
	</Directory>

	CustomLog /var/log/apache2/access.log combined

</VirtualHost>
Wir brauchen diese Funktion damit erkannt wird was in der Adressleiste des Webbrowsers eingegeben wurde. Sollte jemand z.B. test.de und nicht http://www.test.de eingeben, wird er automatisch zu http://www.test.de weitergeleitet.
Wurde wie folgt gelöst:

Code: Select all

<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} !^www.test.de
  RewriteRule ^(.*) http://www.test.de$1 [L,R=301]
</IfModule>