Variablen in .htaccess

xamppgast

Blog Benutzer
Hi,
ich wollte mich etwas in .htaccess einarbeiten, insbesondere in die Erstellung von eigenen Variablen
ich habe folgende daher Zeilen in der .htaccess:
PHP:
RewriteEngine On
RewriteCond %{SCRIPT_NAME} ^(\/.+)(\/.+)(\/.+)\.php
RewriteRule ^(.*)$ - [E=P1:%1,E=P2:%2,E=P3:%3]
Der Wert des SCRIPT_NAME ist /Archiv/Protokolle/p2202.php

Leider wird gemeldet
"undefined index: P1 in ...."
"undefined index: P2 in ...."
"undefined index: P3 in ...."

Was ist da falsch?
 

marce

Active Member
Grob auf den 1. Blick:
https://httpd.apache.org/docs/current/rewrite/flags.html#introduction
Flags that alter metadata associated with the request (T=, H=, E=) have no affect in per-directory and htaccess context, when a substitution (other than '-') is performed during the same round of rewrite processing.
... keine Garantie, nur zwischen Tür und Angel.


Bzw - "wo" wird der Fehler gemeldet? Im PHP-Script, im Fehler-Log des Servers, ...?
 

xamppgast

Blog Benutzer
Was zeigt denn phpinfo() unter Server API?
Server API Apache 2.0 Handler

Die PHP-Version: PHP Version 7.2.3
phpinfo() liefert weiterhin:
Unter Apache Environment: SCRIPT_NAME = /Archiv/Protokolle/p2202.php
Unter PHP Variables: $_SERVER['SCRIPT_NAME'] = /Archiv/Protokolle/p2202.php
 
Last edited by a moderator:

Joe User

Zentrum der Macht
Lerne doch endlich mal die Doku zu lesen, das habe ich Dir in den letzten zehn Jahren schon mehrfach gesagt...
 

marce

Active Member
... und Du, JoeUser, solltest nicht immer nur direkt reingrätschen und irgendwas behauten, was Dir in den Kram passt sondern auch mal den kompletten Thread lesen. SCRIPT_NAME will er weder verarbeiten noch sonst irgendwas damit tun.

btw - phpinfo() gibt ein SCRIPT_NAME aus. Ist halt keine Apache-Server-Variabale sondern eine im php - aber das ist für das Problem des TE ja auch nicht relevant.
 

xamppgast

Blog Benutzer
SCRIPT_NAME gibt es nicht und kann daher auch nicht gematched werden:]
Hi Joe,
würdest Du auf die Idee kommen und in der Doku nachlesen, ob es einen Namen gibt, wenn dir phpinfo() den Namen mit Inhalt anzeigt? - ich nicht!
Und was gilt nun? Die Doku oder die mir angezeigten Daten?
 

Attachments

danton

Debian User
Nicht alle Variablen stehen zu jedem Zeitpunkt in Apache zur Verfügung. IIRC wird die SCRIPT_NAME erst irgendwann nach erfolgten Rewrite-Regeln mit einem Wert gefüllt, so dass die Variable in PHP verfügbar ist, aber halt noch nicht in htaccess-Dateien.
 

xamppgast

Blog Benutzer
@alle Helfer:
Kann ich nun den vorhandenen SCRIPT_NAME verwenden?
Er wird ja durch phpinfo() im gleichen Block angezeigt wie z.B. QUERY_STRING, REMOTE_ADRESS u.a. Variablen, die man in .htaccess ansprechen kann.
 
Top