Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Serverwechsel => No input file specified

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Neues Thema Antworten
petefish
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 01.03.2009, 00:50

Beitrag von petefish » 13.03.2013, 18:43

Hallo,

mein Provider hat mich zwangsumgesiedelt. Nun funktionieren die meisten meiner htaccess Regeln nicht mehr.

z.B.

Code: Alles auswählen

RewriteEngine On
#Regel 1, geht nicht
RewriteRule ^test/dateiname.html$ /datei.php [QSA]

#Regel 2, geht
RewriteRule ^dateiname.html$ /datei.php [QSA]

#Regel 3, geht
RewriteRule ^test/$ /datei.php [QSA]
Regel 1 funktioniert nicht, es wird nur "No input file specified." ausgegeben.
Der Ordner "test" und die .html Dateien existieren logischerweise nicht auf dem ftp (sind nur virtuell).
Regel 2 und 3 funktionieren tadellos.
Sobald ein virtueller Ordner in Verbindung mit einer virtuellen Datei in der Regel vorkommt, funktioniert es einfach nicht.

Woran liegt das?

Ein paar Infos zum Server:
Linux server19 3.4.28-2.20-default #1 SMP Tue Jan 29 16:51:37 UTC 2013 (143156b) x86_64
PHP: 5.3.15
Server API: CGI/FastCGI

Ich habe schon mit den php.ini Einstellungen
cgi.fix_pathinfo (derzeit 1) und cgi.force_redirect (derzeit 0) erfolglos experimentiert.

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

elmex
PostRank 9
PostRank 9
Beiträge: 1009
Registriert: 03.05.2005, 09:09

Beitrag von elmex » 13.03.2013, 19:56

War es nicht so, dass man einige Zeichen in der RewriteRule maskieren sollte? Ich zumindest schreibe z.B. immer \/ statt nur /...

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 14.03.2013, 12:02

elmex hat geschrieben:War es nicht so, dass man einige Zeichen in der RewriteRule maskieren sollte? Ich zumindest schreibe z.B. immer \/ statt nur /...
Den / maskiere ich nur in JavaScript bei </a> mit \/, damit JS das nicht mit </ dem Ende von JavaScript verwechselt, die letzten Versionen können damit aber wohl auch schon umgehen. Auch wenn / wie bei /Muster/ als Delimiter verwendet werden, muss / im Muster \/ maskiert werden, bei #Muster# oder sonstigen Delimiter-Zeichen hingegen nicht.

Was aber in den Mustern der Regeln maskiert werden sollte, ist der Punkt \. als Meta-Zeichen, also ^dateiname\.html$. In einer Zeichenklasse brauchte er wieder nicht maskiert zu werden. Am Ende einer Zeile würde ich [L] verwenden, kombiniert mit [QSA] hingegen nur, wenn der QueryString verändert werden soll.
petefish hat geschrieben:Regel 1 funktioniert nicht, es wird nur "No input file specified." ausgegeben.
So eine Mitteilung kenne ich nicht oder kann mich nur nicht daran erinnern. Wenn

"www.example.com/test/dateiname.html"

aufgerufen wird, sollte im Hintergrund

"www.example.com/datei.php"

ausgegeben werden, falls vorhanden:

Code: Alles auswählen

RewriteRule ^test/dateiname\.html$ /datei.php &#91;L&#93;
Edit: Gerade nachgelesen, die Mitteilung kommt ja auch von PHP "No input file specified" und hat wohl eher weniger mit der htaccess zu tun? Somit sollte sich ja zunächst einmal datei.php aufrufen lassen und richtig arbeiten, bevor die für URL-Rewriting genutzt wird.

Edit 2: Kurz getestet, funktioniert bei mir unter Localhost. Wenn ich "https://localhost/test/dateiname.html" aufrufe wird "https://localhost/a.php" ausgeliefert.

Code: Alles auswählen

RewriteRule ^test/dateiname\.html$ /a.php &#91;L&#93;
Eventuell müsstest Du da vielleicht noch

Code: Alles auswählen

Options  +FollowSymLinks +SymLinksIfOwnerMatch
oder so etwas ähnliches einfügen, doch das habe ich bisher noch nie getestet, da noch nie benötigt. Da müsste ich selbst erst einmal nachlesen, wie das richtig eingefügt wird. Jedenfalls funktioniert diese Schreibweise bei mir auch:

Code: Alles auswählen

RewriteEngine on
Options +FollowSymlinks

RewriteRule ^test/dateiname\.html$ /a.php &#91;L&#93;
Nach allen Seiten, die ich zwischenzeitlich überflog, bleibt "No input file specified" aber eine Fehlermitteilung von PHP.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


petefish
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 01.03.2009, 00:50

Beitrag von petefish » 14.03.2013, 20:31

Mit oder Maskierung hatte ich auch schon ausprobiert. Hatte keinen Unterschied gebracht.

Es muss ja irgendwie an der Serverkonfiguration liegen.
Es wurde sonst ja nichts anderes geändert.

Wenn ich zu QSA zusätzlich das Flag L setze, funktionieren die Regeln jetzt.
Weiter unten war noch ein Regel die alles von .html auf .php leitet. Ohne L wurde diese Regel wohl ausgeführt, wodurch eine nicht existierende PHP Datei aufgerufen wurde. Warum es auf dem alten Server funktionierte und warum dann diese Ausgabe "No input file specified" ausgegeben wurde und nicht das errordocument für code 404 is mir schleierhaft.

Ich hätte aber noch ein weiteres Problem.
Und zwar haben die php Dateien wirre Dateinamen, weshalb ich eben diese htaccess Regeln verwende.
Auf dem alten Server hatte ich zusätzlich eine 301 Weiterleitung vom wirren Dateinamen zur SEO Url.
Also alte Regel für eine Datei:

Code: Alles auswählen

RewriteRule ^datei.php$ http&#58;//www.beispiel.de/test/dateiname.html &#91;R=301,L&#93;
RewriteRule ^test/dateiname.html$ /datei.php &#91;QSA&#93; 
Mit den besagten Änderungen sieht die Regel jetzt so aus.

Code: Alles auswählen

RewriteRule ^datei.php$ http&#58;//www.beispiel.de/test/dateiname.html &#91;R=301,L&#93;
RewriteRule ^test/dateiname.html$ /datei.php &#91;QSA,L&#93; 
Das verursacht aber eine Umleitungsschleife, was logisch ist. Nur warum klappte es auf dem alten Server. Gibt es eine andere htacces Lösung, wie ich die 301 Weiterleitung auf die SEO Url bekomme?

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 14.03.2013, 20:46

petefish hat geschrieben:Das verursacht aber eine Umleitungsschleife,
Vermeidung einer Endlosschleife habe ich gerade hier beantwortet:
https://www.abakus-internet-marketing.d ... 16423.html

Tausche jetzt mal nur die Dateinamen vom getesteten Beispiel aus dem anderen Thread aus.

Code: Alles auswählen

RewriteEngine on

RewriteCond %&#123;QUERY_STRING&#125; !^nur=so$
RewriteRule ^datei\.php$ /test/dateiname.html &#91;L,R=301&#93;
RewriteRule ^test/dateiname\.html$ /datei.php?nur=so &#91;QSA,L&#93;
Noch eine Anleitung, falls zu den URIs bereits ein QueryString gehört: URL-Rewriting

petefish
PostRank 1
PostRank 1
Beiträge: 5
Registriert: 01.03.2009, 00:50

Beitrag von petefish » 14.03.2013, 21:11

Hmm netter Trick mit dem Querystring, danke.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 14.03.2013, 21:52

Habe meine Seite um ein Beispiel von heute ergänzt, dabei fiel mir auf, ohne Übernahme eines vorhandenen QueryStrings fehlt da noch ein Fragezeichen hinter html, um vorhandene QueryStrings abzuhängen.

Code: Alles auswählen

RewriteRule ^datei\.php$ /test/dateiname.html? &#91;L,R=301&#93; 
Mit Übernahme fehlt hingegen ein Platzhalter im Muster der Bedingung:

Code: Alles auswählen

RewriteCond %&#123;QUERY_STRING&#125; !^nur=so.*$

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag