Apache-Rewrite funktioniert unter FreeBSD, nicht unter CentOS

Apache-Rewrite funktioniert unter FreeBSD, nicht unter CentOS

Ich habe 5 Produktionsserver, auf denen FreeBSD 9.2 läuft, aber wir planen eine Umstellung auf CentOS. Aus diesem Grund versuche ich, einige virtuelle Maschinen einzurichten, um unsere Produktionsserverumgebung mit CentOS 6.6 zu emulieren. Ich habe alles eingerichtet und es funktioniert großartig, abgesehen von einer einzigen Umschreibregel.

<Directory /var/www/html/www/trunk/amapi>
  RewriteEngine on
  RewriteRule  ^$ public/    [L]
  RewriteRule  (.*) public/$1 [L]
</Directory>
<Directory /var/www/html/www/trunk/amapi/public>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</Directory>
<Directory /var/www/html/www/trunk>
  RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*start\.php
  RewriteRule ^start.php/?(.*)$ $1 [R=301,L]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ start.php/$1?%{QUERY_STRING} [L]
</Directory>

Die ersten beiden Umschreiberegeln gelten für eine Back-End-API mit Phalcon und funktionieren in beiden Umgebungen einwandfrei. Die dritte Umschreiberegel ist ein Catch-All, um alle Anfragen, die nicht mit einer echten Datei übereinstimmen, an start.php umzuleiten. Dort wird versucht, sie einem Phalcon-Modul zuzuordnen, und dann auf eine 404-Seite, wenn keine Route gefunden wird.

Aus irgendeinem Grund funktioniert es unter FreeBSD, auf dem Apache 2.2.27 läuft, aber nicht unter CentOS, auf dem derzeit Apache 2.2.15 läuft. Dies ist eine sehr einfache Umschreibregel, die unter beiden Versionen von Apache problemlos funktionieren sollte, aber Apache gibt immer eine 404 aus, wenn ich versuche, auf die Datei zuzugreifen. Übersehe ich etwas? Offensichtlich fehlen die SSL-Konfiguration und die spezifischen Optionen im angezeigten Code, aber dies ist die Reihenfolge, in der die Anforderungen in ssl.conf erscheinen.

Dank im Voraus

Update: Apache Rewrite-Protokolle sind:

10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (2) init rewrite engine with requested uri /letters/custom/test
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/attc2/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/forms/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/grafx/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/xport/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '.*' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (4) RewriteCond: input='' pattern='!.*mydomain.com/.*$' [NC] => matched
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (4) RewriteCond: input='/letters/custom/test' pattern='\\.(jpg|gif|png)$' => not-matched
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (1) pass through /letters/custom/test

Antwort1

Ich frage mich, ob das Problem möglicherweise nur ein nicht maskierter Punkt ist. Versuchen Sie, diese Zeile zu ersetzen:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*start\.php

Mit:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\.*start\.php

verwandte Informationen