2016-03-31 5 views
0

Ich habe eine .htaccess-Datei erstellt, die PNG-QR-Code-Anfragen an einen PHP-QR-Code-Generator weiterleitet..htaccess: Wie kann ich nur beim Zugriff auf ein bestimmtes Unterverzeichnis auf ein PHP-Skript umleiten?

RewriteEngine On 
RewriteBase /qr/ 

RewriteCond %{THE_REQUEST} \ /+([^\?\ ]+)\.png 
RewriteRule ^(.*)$ access-code.php?id=%1 [QSA,L] 

Es funktioniert gut für die ursprüngliche Absicht, sondern sendet auch JEDE .png Anforderung an das gleiche Skript. Ich muss die RewriteCond so ändern, dass nur .png-Dateien akzeptiert werden, wenn sie sich im Verzeichnis/qr/access-code/* befinden.

legte ich die .htaccess-Datei im folgenden Verzeichnis:

/qr/.htaccess

Beispiel Anforderung, die auch bestimmt (nicht eine tatsächliche Link) funktioniert:

http://mywebsite.com/qr/access-code/12345678.png

Beispiel Anfrage, die "funktioniert", aber ich möchte nicht, dass es umgeleitet wird:

http://mywebsite.com/qr/img/background.png (nicht ein tatsächlicher Link)

Wie kann ich meine .htaccess-Bedingung anpassen, damit meine Regel wie beabsichtigt funktioniert?

Antwort

0

können Sie Folgendes verwenden:

RewriteEngine On 
RewriteBase /qr/ 
##If /document_root/dir/foo.png is an existent file##  
RewriteCond %{DOCUMENT_ROOT}/access-code/$1 -f 
##Rewrite /foo.png to access-code.php?id=foo.png 
RewriteRule ^(.+\.png)$ access-code.php?id=$1 [QSA,L] 
+0

Diese enge ist denke ich, aber nicht ganz da. In% {DOCUMENT_ROOT}/Zugriffscode/$ 1 sind keine Dateien zu finden. Diese Anfragen werden in die access-code.php (die eine generierte Datei liefert) umgeleitet. Ich werde weiterhin mit Variationen davon spielen. –

+1

Update: Ihre letzte Zeile ist eine gute Verbesserung gegenüber meiner ursprünglichen, bessere Sicherheit, danke! Ich habe eine Anpassung an deinen Zustand vorgenommen, der großartig zu funktionieren scheint. Darf ich Ihre Antwort bearbeiten und Ihnen den Scheck geben? 'RewriteCond% {REQUEST_URI}"/Zugriffscode/"' –

Verwandte Themen