htaccess / foo / bar / mydocument.doc gelen / foo / bar / auth_test.php? q = mydocument.doc yönlendirmek

2 Cevap php

I / / foo / bar docs ve pdf bir grup ile bir Web sitesi var

Dizin tarama kapalı, bu nedenle belge almak için özel URL / URI açılan bilmek zorunda olduğunu. Ben onların auth çerez ayarlandığında kontrol eder ve eğer öyleyse, onların dosyayı alır bir php sayfası / foo / bar / TÜM istekleri yönlendirme bir yol bulmak istiyorum. Tabii ki, ben de loop önlemek için kural istek auth_test.php için ise not tetiklemek için, gerekir. I / foo / bar. Htacess ile mücadele edilmiştir / ve ben sadece bu işe alınamıyor. mod_rewrite regexes kıyasla net ve belirgin görünmesini sağlar.

. İşte benim şimdiki htaccess dosyası (/ foo / bar / in):

RewriteEngine On
RewriteRule !^auth_test\.php$ /foo/bar/auth_test\.php?q=$1 [R=301,L]

Bu başarıyla /foo/bar/auth_test.php istek için çalışır, ancak bir istek / foo / bar / şey /foo/bar/auth_test.php?q= beni gönderir

$ 1 gibi bile çekilmiyor. Ayrıca, bu kural göz ardı edilecek gibi görünüyor dosyası varsa, istenen dosyayı indirmek için istenmesini kullanıcı istekleri için / foo / bar / mydocumnent.doc sonuç yani. Hatta eklemek için denedim

RewriteCond %{REQUEST_FILENAME} -f

Bunu önlemek için, ama çalışmak için görünmüyor. Ben burada tamamen bir kayıp değilim. Herhangi bir öneriniz?

2 Cevap

In order for $1 to work you need to set a capturing group to be matched and assigned to $1 Try this

RewriteRule !^(auth_test\.php)$ /foo/bar/auth_test\.php?q=$1 [R=301,L]

Ben auth_test.php içinde yapıyor ama sen de. Htaccess dosyası içinde çerez kontrolleri gerçekleştirebilir RewriteRules ve Şartları kullanarak kontrol emin değilim.

Ya bu deneyin:

RewriteCond $1 !^auth_test\.php$
RewriteRule (.*) /foo/bar/auth_test.php?q=$1 [R=301,L]

Ya da bu:

RewriteCond %{REQUEST_URI} ^/foo/bar/(.*)
RewriteRule !^auth_test\.php$ /foo/bar/auth_test.php?q=%1 [R=301,L]