2017-04-06 3 views
0

Ich versuche, ein Problem mit einigen Apache Config zu debuggen, aber ich kann die Apache Rewrite nicht funktionieren, wenn Sie RewriteMap verwenden.korrigieren Apache RewriteCond und RewriteRule bei der Verwendung von RewriteMap?

dies ist der Inhalt in /etc/apache2/map.txt

/21.html /1.html 
/22.html www.localhost/2.html 
www.localhost/23.html www.localhost/3.html 
/23.html?blabla=bla /4.html 

dies zu testen i mit einem kleinen Skript ein paar HTML-Seiten zur Verfügung gestellt:

#!/bin/bash 

COUNTER=1 

while [ $COUNTER -lt 20 ]; do 
echo "<html> 
<body> 

<h1>PAGE NR $COUNTER</h1> 

<p>My first paragraph.</p> 

</body> 
</html>" > /var/www/$COUNTER.html 
let COUNTER=COUNTER+1 
done 

i jeder so ziemlich versucht Variation fand ich in den Foren/google, aber keiner konnte meine RewriteCond und RewriteRule zum Funktionieren bringen.

ich weiß nicht, das richtige Setup in meinem Virtualhost:

RewriteEngine on 
RewriteMap map "/etc/apache2/map.txt" 
RewriteCond ??????? 
RewriteRule ??????? 

im nicht wirklich sicher, aber ich glaube, ich mehr RewriteCond und RewriteRule haben sollte alle jene diferent Zeilen aus der Map-Datei übereinstimmen.

Auch bekomme ich wirklich nicht, wie man die Bedingung/Regel unter Verwendung der Werte von der Kartendatei anpaßt. In einigen Beispielen beziehen sich Leute auf $ 1 und $ 2 und einige nicht.

Jede Hilfe ist wirklich

Antwort

0

denen geschätzt sind die Bedingungen/Regeln, die Arbeit bekam Dinge:

RewriteCond %{REQUEST_URI}     ^(/.*[^/])/?$ 
RewriteCond %{QUERY_STRING}  !.+ 
RewriteCond ${map:${lc:%1}|NOT_FOUND} !NOT_FOUND 
RewriteRule .+ ${map:${lc:%1}}?     [NC,L,R] 

RewriteCond %{REQUEST_URI}     ^(/.*[^/])/?$ 
RewriteCond %{QUERY_STRING}  ^.+ 
RewriteCond ${map:${lc:%{REQUEST_URI}?%{QUERY_STRING}}|NOT_FOUND} !NOT_FOUND 
RewriteRule .+ ${map:${lc:%{REQUEST_URI}?%{QUERY_STRING}}} [NC,L,R] 
Verwandte Themen