Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Mod_rewrite Probleme nach Apache Upgrade
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.
Hast du als root schon a2enmod rewrite ausgeführt?
is aktiv.
im Chrome kriege ich nen Redirect-Loop und meine htaccess kentnisse sind bescheiden :D
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]
Nope mein Chrome meldet mir immernoch:
ERR_TO_MUCH_REDIRECTS
Aber trotzdem Danke..
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]
Gemeldet wird mir :
/var/www/.htaccess: RewriteRule: bad flag delimiters
//Edit lasse ich nur page stehen wird wieder der Loop ausgelöst beim redirecten..
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]
Dann gibt´s nen 500er Error.
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 ;)
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
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]
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.
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
Die statischen Files passen schon, sind noch Code- bzw. Pfadfehler die im Moment auftauchen.
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)
So, nun läuft wieder alles :)
Alles noch nicht zu 100%, aber danke für deine Hilfe jbs :)
Powered by vBulletin® Version 4.2.2 Copyright ©2026 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.