.htaccess: Odwołanie wsteczne w RewriteCond, aby sprawdzić istnienie pliku?


0

Próbuję dopasować adresy URL tego typu:

http://www.example.com/image/12345

Chciałbym wtedy sprawdzić, czy ten plik istnieje:

http://www.example.com/files/image_12345.jpg

Jeśli tak, chciałbym przepisać adres URL, aby wskazał ten plik.

Jeśli nie, chciałbym przepisać adres URL, aby wskazał mój skrypt do generowania obrazu:

http://www.example.com/img_gen.php?id=12345

Oto co mam do tej pory:

RewriteCond %{REQUEST_FILENAME} ^/image/([0-9]+)$
RewriteCond %{DOCUMENT_ROOT}/files/images_%1.jpg !-f
RewriteRule ^image/([0-9]+)$ img_gen.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^image/([0-9]+)$ /files/images_$1.jpg [L]

Ale dostaję tylko 404.


Czy próbowałeś utworzyć i przejrzeć dziennik przepisywania Apache? httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog - może pomóc w diagnozie i możesz wkleić dane wyjściowe w swoim pytaniu.
EightBitTony

Chciałbym móc, ale jestem na wspólnym serwerze. Może wypróbuję to lokalnie w środowisku MAMP.
jawns317

Możesz dodać komendy przepisywania dziennika do pliku .htaccess - patrz pierwsza dotychczasowa odpowiedź
EightBitTony

Odpowiedzi:


0

Jeśli nie możesz dowiedzieć się, co robią Twoje reguły przepisywania, powinieneś włączyć RewriteLog z pewną zwiększoną szczegółowością:

RewriteLogLevel 3
RewriteLog "/var/log/rewrite.log"

To powinno dać ci całkiem dobrą pozycję wyjściową w dalszym badaniu tego, co dzieje się źle.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.