Палец вверх 4
Перевод
Перевод

Перенаправление на фото с помощью htaccess

В основном я использую htaccess, у меня есть скрытый каталог, который я бы предпочел не использовать, и я хочу более короткие ссылки:

мне бы хотелось

http://example.com/12940.png

идти

http://example.com/_images/12940.png

Вот мое правило:

RewriteRule ^([A-Za-z0-9\_\-\/]+).([A-Za-z]+)$  "_images/$1.$2"

Что с этим не так, я получаю 500.

.htaccess mod-rewrite
задан Jake 18 нояб. 2011 г., 13:22:50
источник

2 ответа

Решение 3
Перевод
Перевод

Вот что вы должны сделать:

RewriteEngine On
RewriteRule ^([a-z0-9_\-]+)\.([a-z]+)$ _images/$1.$2 [NC,L]

используя NC (без учета регистра) вам не нужно ставить A-Za-Z, а L означает последнее правило, если у вас есть другие правила после этого.

ответ дан Book Of Zeus 18 нояб. 2011 г., 15:48:08
источник
Палец вверх 0
Перевод
Перевод

Это правило не выполняется, потому что у вас есть / в нем. Таким образом, перенаправленный URL ( _images/12940.png ) снова перехватывается правилом, и mod_rewrite пытается перенаправить его на ( _images/_images/12940.png ).

Поэтому вы должны проверить, начинается ли путь уже с _images :

RewriteRule ^(?!_images)([A-Za-z0-9\_\-\/]+).([A-Za-z]+)$  "_images/$1.$2"

Также вы можете улучшить свое правило следующим образом:

RewriteRule ^(?!_images)([a-z0-9_\-/]+\.[a-z]+)$  _images/$1 [NC]

Не нужно избегать _ и / , но вы должны избегать . потому что это соответствует любому символу в противном случае. NC делает правило нечувствительным к регистру, поэтому вам не нужен дополнительный AZ .

ответ дан Jona 18 нояб. 2011 г., 15:58:38
источник