2010-12-01 6 views
0

Ich habe eine Reihe von HTML-Dateien unter: www.example.com und die "Haupt-Website" (in der Beta-Version) unter: www.example.com/abcd/ (für welche Diese mod_rewrite-Regeln werden benötigt)Konvertieren von mod_rewrite Regeln in .htaccess zu httpd.conf

Die mod_rewrite-Regeln können problemlos in einem Verzeichnis innerhalb von .htaccess ausgeführt werden. Ich brauche sie in httpd.conf setzen:

Die Regeln sehen wie folgt in .htaccess:

RewriteEngine On 
RewriteBase /abcd/ 

RewriteRule ^.*/codelibrary/(.*)$ codelibrary/$1 [L] 
RewriteRule ^.*/in_upload/images/(.*)$ in_upload/images/$1 [L] 
... 

Kopieren der unten in die Datei httpd.conf nicht funktioniert hat:

<VirtualHost *:80> 
ServerAlias www.example.com 
ServerAdmin [email protected] 
DocumentRoot /var/www/html 
ServerSignature On 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /abcd/ 
    ... 

Es gab einen Fehler:

RewriteBase: only valid in per-directory config files 

Muss ich alle Regeln so ändern?

RewriteRule ^.*/abcd/codelibrary/(.*)$ abcd/codelibrary/$1 [L] 
RewriteRule ^.*/abcd/in_upload/images/(.*)$ abcd/in_upload/images/$1 [L] 

Edit1

Ich habe versucht, die folgenden Zeilen aus zu konvertieren:

... 
RewriteRule (.*)ins.html$ browse.php?type=ins [L] 
... 
RewriteRule ^([a-zA-Z\-]*)/([a-zA-Z0-9\s]*)/([0-9]*)\.html$ browse.php?type=$1&catId=$3 [L] 
RewriteRule ^([a-zA-Z\-]*)/([a-zA-Z0-9\s]*)/([a-zA-Z0-9\s]*)/([0-9]*)/([0-9]*)\.html$ browse.php?type=$1&catId=$4&subCatId=$5 [L] 
... 

An:

... 
RewriteRule ^/abcd/ins.html$ abcd/browse.php?type=ins [L] 
... 
RewriteRule ^/abcd/([a-zA-Z\-]*)/([a-zA-Z0-9\-\s]*)/([0-9]*)\.html$ abcd/browse.php?type=$1&catId=$3 [L] 
RewriteRule ^/abcd/([a-zA-Z\-]*)/([a-zA-Z0-9\-\s]*)/([a-zA-Z0-9\-\s]*)/([0-9]*)/([0-9]*)\.html$ abcd/browse.php?type=$1&catId=$4&subCatId=$5 [L] 
... 

aber ich habe Fehler wie folgt.

Wenn ich versuche http://www.example.com/abcd/ins/Sustainability/282.html zugreife, erhalte ich folgende Fehlermeldung im Protokoll:

IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) init rewrite engine with requested uri /abcd/ins/Sustainability/282.html 
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) rewrite '/abcd/ins/Sustainability/282.html' -> 'abcd/browse.php?type=ins&catId=282' 
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) local path result: abcd/browse.php 

Wenn ich http://www.example.com/abcd/ins.html versuchen Zugriff, ich folgende Fehlermeldung im Protokoll erhalten:

IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) init rewrite engine with requested uri /abcd/ins.html 
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) rewrite '/abcd/ins.html' -> 'abcd/browse.php?type=ins' 
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) local path result: abcd/browse.php 

I‘ Setzen Sie RewriteLogLevel auf 2

Die unveränderte Version unserer mod_rewrite-Regeln finden Sie unter: https://webmasters.stackexchange.com/questions/4237/url-rewritten-pages-take-much-longer-to-load

Antwort

0

Welchen Zweck haben die Neuschreibungsregeln (d. H. Was versuchen Sie zu erreichen)?

Durch das Aussehen des Originals in der .htaccess es tat zu umleiten: www.example.com/abcd/ etwas/codelibrary/aaaa zu www.example.com/abcd/codelibrary/aaaa

Das gleiche gilt auch für in_upload/images, Ist das korrekt?

Wenn ja, dann sollte diese Arbeit:

RewriteRule ^/abcd/.*/codelibrary/(.*)$ /abcd/codelibrary/$1 [L] 
RewriteRule ^/abcd/.*/in_upload/images/(.*)$ /abcd/in_upload/images/$1 [L] 
+0

Hallo @ Ben - Sie haben einen Blick auf das Bearbeiten - Ich denke nicht, die Änderungen richtig – siliconpi

+0

Diejenigen gearbeitet erscheinen keine Fehler zu sein, und sah aus wie Es ist erfolgreich, sie an abcd/browse.php weiterzuleiten, was passiert auf der Seite des Browsers? – Ben

+0

Hallo @Ben - es gibt eine "schlechte Anfrage" Ihr Browser hat eine Anfrage gesendet, die dieser Server nicht verstehen konnte."Für beide in Edit1 genannten URLs – siliconpi