Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Mod_rewrite Probleme nach Apache Upgrade



VTK
17.02.2016, 10:37
Moin moin,

ich bin gestern mit meine Seite von einem Apache 2.2 Server auf einen Apache 2.4 Server umgezogen. Seitdem funktioniert mod_rewrite nicht mehr.
Hab mich schon zu Tode gegoogled, aber keinen brauchbaren Ansatz gefunden, das Problem gelöst zu bekommen.

Die .htaccess sieht folgendermaßen aus:

RewriteEngine On
RewriteRule ^admin/(.*).html$ admin/index.php?controller=admin_$1&%{QUERY_STRING}
RewriteRule ^feed/(.*).xml$ index.php?controller=feed_$1&%{QUERY_STRING}
RewriteRule ^page/(.*).html$ index.php?controller=page_$1&%{QUERY_STRING}
RewriteRule ^download/([0-9]+)/.*.html$ index.php?controller=page_category&category_id=$1&%{QUERY_STRING}
RewriteRule ^download/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_category&subcategory_id=$1&%{QUERY_STRING}
RewriteRule ^download/[^/]*/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_article&id=$1&%{QUERY_STRING}
RewriteRule ^search.html$ index.php?controller=page_category&%{QUERY_STRING}
RewriteRule ^user/(.*).html$ admin/index.php?controller=admin_$1&%{QUERY_STRING}

Und die Apache Config folgendermaßen:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Bekomme allerdings nur noch 404er oder es wird nur eine weiße Seite angezeigt.

Irgendnen Apache Spezi unter uns, der helfen kann?

/Edit: Xenforo funktioniert komischerweise einwandfrei.

jbs
17.02.2016, 11:13
Hast du als root schon a2enmod rewrite ausgeführt?

xTear
17.02.2016, 11:28
is aktiv.

im Chrome kriege ich nen Redirect-Loop und meine htaccess kentnisse sind bescheiden :D

sp1r1t
17.02.2016, 15:32
erst seit dem update?

Mir ich würde folgendes mal probieren. Anstatt mit {QUERYSTRING} zu arbeiten, die Flags zu setzen!



RewriteEngine On
RewriteRule ^admin/(.*).html$ admin/index.php?controller=admin_$1 [L,QSA]
RewriteRule ^feed/(.*).xml$ index.php?controller=feed_$1 [L,QSA]
RewriteRule ^page/(.*).html$ index.php?controller=page_$1 [L,QSA]
RewriteRule ^download/([0-9]+)/.*.html$ index.php?controller=page_category&category_id=$1 [L,QSA]
RewriteRule ^download/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_category&subcategory_id=$1 [L,QSA]
RewriteRule ^download/[^/]*/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_article&id=$1 [L,QSA]
RewriteRule ^search.html$ index.php?controller=page_category [L,QSA]
RewriteRule ^user/(.*).html$ admin/index.php?controller=admin_$1 [L,QSA]

xTear
17.02.2016, 15:42
Nope mein Chrome meldet mir immernoch:

ERR_TO_MUCH_REDIRECTS

Aber trotzdem Danke..

sp1r1t
17.02.2016, 15:47
Nope mein Chrome meldet mir immernoch:

ERR_TO_MUCH_REDIRECTS

Aber trotzdem Danke..

Hab ne Idee.
Teste mal bitte den Adminbereich und den Page bereich.
Kommt das bei beiden?


Und teste mal bitte:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^admin/(.*).html$ admin/index.php?controller=admin_$1 [L,QSA]
RewriteRule ^feed/(.*).xml$ index.php?controller=feed_$1 [L,QSA]
RewriteRule ^page/(.*).html$ index.php?controller=page_$1 [L,QSA]
RewriteRule ^download/([0-9]+)/.*.html$ index.php?controller=page_category&category_id=$1 [L,QSA]
RewriteRule ^download/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_category&subcategory_id= $1 [L,QSA]
RewriteRule ^download/[^/]*/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_article&id=$1 [L,QSA]
RewriteRule ^search.html$ index.php?controller=page_category [L,QSA]
RewriteRule ^user/(.*).html$ admin/index.php?controller=admin_$1 [L,QSA]

xTear
17.02.2016, 17:06
Gemeldet wird mir :

/var/www/.htaccess: RewriteRule: bad flag delimiters

//Edit lasse ich nur page stehen wird wieder der Loop ausgelöst beim redirecten..

sp1r1t
17.02.2016, 17:43
Vllt fehlte der OR Flag.
Rewritelog vllt mal testen ;)



RewriteEngine On
RewriteLog /var/www/rewrite.log
RewriteLogLevel 5

RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^admin/(.*).html$ admin/index.php?controller=admin_$1 [L,QSA]
RewriteRule ^feed/(.*).xml$ index.php?controller=feed_$1 [L,QSA]
RewriteRule ^page/(.*).html$ index.php?controller=page_$1 [L,QSA]
RewriteRule ^download/([0-9]+)/.*.html$ index.php?controller=page_category&category_id=$1 [L,QSA]
RewriteRule ^download/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_category&subcategory_id=$1 [L,QSA]
RewriteRule ^download/[^/]*/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_article&id=$1 [L,QSA]
RewriteRule ^search.html$ index.php?controller=page_category [L,QSA]
RewriteRule ^user/(.*).html$ admin/index.php?controller=admin_$1 [L,QSA]

VTK
17.02.2016, 23:10
Dann gibt´s nen 500er Error.

sp1r1t
18.02.2016, 08:58
Also laut nem HTaccess-Tester funzen die Rules. Hier nochmal gekürzt
Falls es error gibt wegen dem RewriteLog.

$ touch /var/www/rewrite.log
$ chmod 755 /var/www/rewrite.log



RewriteEngine On
RewriteLog /var/www/rewrite.log
RewriteLogLevel 5

RewriteRule ^admin/(.*).html$ admin/index.php?controller=admin_$1 [QSA]
RewriteRule ^feed/(.*).xml$ index.php?controller=feed_$1 [QSA]
RewriteRule ^page/(.*).html$ index.php?controller=page_$1 [QSA]
RewriteRule ^download/([0-9]+)/.*.html$ index.php?controller=page_category&category_id=$1 [QSA]
RewriteRule ^download/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_category&subcategory_id=$1 [QSA]
RewriteRule ^download/[^/]*/[^/]*/([0-9]+)/.*.html$ index.php?controller=page_article&id=$1 [QSA]
RewriteRule ^search.html$ index.php?controller=page_category [QSA]
RewriteRule ^user/(.*).html$ admin/index.php?controller=admin_$1 [QSA]


Ansonsten mich mal in Jabber oder IRC anschreiben ;)

xTear
18.02.2016, 09:16
Du benutzt Apache 2.2 Rules.
In Apache 2.4 is RewriteLog in der htaccess nicht mehr erlaubt, das muss in der vhost-configuration drin sein sonst errort er. Allerdings kann ich dir diesen Log hier präsentieren:


[Thu Feb 18 09:20:13.084557 2016] [rewrite:trace3] [pid 8885] mod_rewrite.c(475): [client 66.249.64.92:62899] 66.249.64.92 - - [.biz/sid#7fd12d280f48][rid#7fd12cfa18b0/initial/redir#1] [perdir /var/www/] strip per-dir prefix: /var/www/index.php -> index.php
[Thu Feb 18 09:20:13.084621 2016] [rewrite:trace3] [pid 8885] mod_rewrite.c(475): [client 66.249.64.92:62899] 66.249.64.92 - - [.biz/sid#7fd12d280f48][rid#7fd12cfa18b0/initial/redir#1] [perdir /var/www/] applying pattern '^user/(.*).html$' to uri 'index.php'
[Thu Feb 18 09:20:13.084670 2016] [rewrite:trace1] [pid 8885] mod_rewrite.c(475): [client 66.249.64.92:62899] 66.249.64.92 - - [.biz/sid#7fd12d280f48][rid#7fd12cfa18b0/initial/redir#1] [perdir /var/www/] pass through /var/www/index.php

sp1r1t
18.02.2016, 09:56
Versuch mal in der Apache COnfig das MultiViews zu deaktivieren und das "Require" Flag mit reinzunehmen.
Das "-MultiViews" soll wohl n Apache Bug sein.



<Directory /var/www/>
Options -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>


Und htaccess ohne Log und Anführungszeichen.


RewriteEngine On

RewriteRule "^admin/(.*).html$" "admin/index.php?controller=admin_$1" [QSA]
RewriteRule "^feed/(.*).xml$" "index.php?controller=feed_$1" [QSA]
RewriteRule "^page/(.*).html$" "index.php?controller=page_$1" [QSA]
RewriteRule "^download/([0-9]+)/.*.html$" "index.php?controller=page_category&category_id=$1" [QSA]
RewriteRule "^download/[^/]*/([0-9]+)/.*.html$" "index.php?controller=page_category&subcategory_id= $1" [QSA]
RewriteRule "^download/[^/]*/[^/]*/([0-9]+)/.*.html$" "index.php?controller=page_article&id=$1" [QSA]
RewriteRule "^search.html$" "index.php?controller=page_category" [QSA]
RewriteRule "^user/(.*).html$" "admin/index.php?controller=admin_$1" [QSA]

jbs
18.02.2016, 15:02
Danke an alle für die Hilfe!

Mehrere Probleme gabs:

Apache2 Config auf dem Server war fehlerhaft.
Nginx lief außerdem noch, welcher auch Endlos-Redirect-Schleifen verursachte.
Das Script hatte zig Ordner im include_path *würg*
Die include_paths waren unvollständig.
Variablen wurden nicht initialisiert und dann fehlerhaft abgefragt.
Includes wurden überall ohne irgendwelche Pfade gemacht (Zugriff auf unvollständige include_paths inklusive).


Aber wenigstens waren die Rewrite Rules ok.

Startseite läuft nun wieder, Detailseiten und Kategorien sind noch fehlerhaft.

sp1r1t
18.02.2016, 15:04
Startseite läuft nun wieder, Detailseiten und Kategorien sind noch fehlerhaft.

Wenn statische files fehlen (bilder,css,etc) denn noch die conditions einbauen und ggf. base path setzen im html header

jbs
18.02.2016, 15:06
Die statischen Files passen schon, sind noch Code- bzw. Pfadfehler die im Moment auftauchen.

sp1r1t
18.02.2016, 15:15
Die statischen Files passen schon, sind noch Code- bzw. Pfadfehler die im Moment auftauchen.

Ahh ok :D ...
Achja weil Nginx ja auch lief.
Falls nicht bekannt, kann man auch die RewriteRules in Nginx Rewrite umwandeln lassen ;)
htaccess to nginx converter (http://winginx.com/en/htaccess)

jbs
18.02.2016, 17:10
So, nun läuft wieder alles :)

VTK
18.02.2016, 19:09
Alles noch nicht zu 100%, aber danke für deine Hilfe jbs :)