mod_rewrite - doppelter request


aGeNET

Erfahrenes Mitglied
Hallo, ich hoffe ich bin hier im richtigen Unterforum gelandet.

In unserer Software nutzen wir mod_rewrite um suchmaschinenfreundliche URLs nutzen zu können, allerdings werden aus irgendeinem Grund (den ich nicht nachvollziehen kann) die entsprechenden Requests doppelt abgesetzt (getestet mit Httpfox), wenn so eine URL aufgerufen wird. Die doppelten Requests sind so normal nicht zu bemerken, ziehen aber mehrere Nachteile nach sich:
- unnötige Requests, die die Serverlast erhöhen
- Facebook-Like-Button meckert rum "Du musst die Anzahl von Weiterleitungen für diese URL reduzieren"

Zunächst die .htaccess:
Code:
Options +FollowSymLinks -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /dir1/dir2/

# www Redirect
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*) http://www.example.com/dir1/dir2/$1 [R=301,L]

# Rewrite v1.5
RewriteRule ^(.*)-p-([0-9]+)\.html$ store-products.php?products_id=$2&checkid=on [L,QSA]
RewriteRule ^(.*)-c-([0-9_]+)\.html$ index.php?cPath=$2&checkid=on [L,QSA]
RewriteRule ^(.*)-m-([0-9]+)\.html$ index.php?manufacturers_id=$2&checkid=on [L,QSA]
RewriteRule ^(.*)-k-([0-9]+)\.html$ store-cms.php?cID=$2&checkid=on [L,QSA]

# Rewrite v2
RewriteCond %{REQUEST_URI} .*/admin/.*
RewriteRule ^.+ - [L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.+ - [L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.+ - [L]

RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.+ - [L]

#CMS
RewriteRule ^cms/(.+/)?([^\/]+)\.html store-cms.php?seo=$2&seo_c=$1 [L,QSA]

#MANUFACTURER
RewriteRule ^manufacturer/(.+/)?([^\/]+)\.html index.php?seo=$2&seo_c=$1&manu_detect=1 [L,QSA]

#PRODUCTS
RewriteRule ^(.*/)?([^\/]+)\.html store-products.php?seo=$2&seo_c=$1 [L,QSA]

#CATEGORIES
RewriteRule ^(.*/)?([^\/\.]+)/?$ index.php?seo=$2&seo_c=$1 [L,QSA]
</IfModule>

Rewrite v1.5 stellt die Kompatibilität zu alten URLs her, die dann intern per PHP-Header entweder mit 301 oder 404 abgehandelt werden.

Als Beispiel für die CMS-Regel unter Rewrite v2:
Code:
http://www.example.com/dir1/dir2/cms/impressum.html
http://www.example.com/dir1/dir2/cms/software/informationen.html
sollen umgeschrieben werden zu:
Code:
http://www.example.com/dir1/dir2/store-cms.php?seo=impressum&seo_c=
http://www.example.com/dir1/dir2/store-cms.php?seo=informationen&seo_c=software/

Hat jemand eine Idee, woher die doppelten Requests kommen? An den PHP-Skripten liegt es nicht. Das wurde getestet, indem ich als erste Zeile ein die() geschickt habe - es findet also keinerlei verarbeitung statt.

Mfg aGeNET

edit:
Habe die Lösung noch etlichem hin und her selbst gefunden:
Das ^ am Anfang der RewriteRule hat die doppelten Requests verursacht.
 
Zuletzt bearbeitet:

Forum-Statistiken

Themen
272.356
Beiträge
1.558.615
Mitglieder
187.832
Neuestes Mitglied
SirrDansen