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
Hallo @ Ben - Sie haben einen Blick auf das Bearbeiten - Ich denke nicht, die Änderungen richtig – siliconpi
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
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