Перенаправление на фото с помощью htaccess - PullRequest
4 голосов
/ 18 ноября 2011

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

Я бы хотел

http://example.com/12940.png

до

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

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

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

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

0 голосов
/ 18 ноября 2011

Это правило не выполняется, потому что в нем есть /. Таким образом, перенаправленный 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 делает правило нечувствительным к регистру, поэтому вам не нужны дополнительные A-Z.

...