Apache переписать регулярное выражение
Я пытаюсь перенаправить URL-адрес, который выглядит следующим образом: http://getdotastats.com/sig/28755155.png
На тот, который выглядит так: http://getdotastats.com/sig/?aid=28755155
Первый URL - это воображаемый, который не существует.
Ниже приведено регулярное выражение, с которым я сталкиваюсь. Можете ли вы увидеть, как это улучшить. Мне не хватает необходимых знаний при формировании регулярного выражения, поэтому я просто заставил его сопоставлять группы и игнорировать те, которые мне не нужны.
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)sig/(.*)\.(.*)$ index.php?aid=$2 [NC,L]
Могу ли я просто добавить вышеприведенное в.htaccess в определенном каталоге (/ sigs) или дополнительные директивы требуются в основном файле vhost?
Спасибо за помощь!
РЕДАКТИРОВАТЬ: Спасибо будущее телематики. Используя.htaccess ниже:
RewriteEngine On
RewriteBase /
RewriteRule testpage\.html http://www.google.com [R]
RewriteRule ^/sig/([0-9]+\.(?:gif|png|jpg))$ index.php?aid=$1 [NC,L]
Тестовая страница перенаправляет на Google, но перенаправление изображения выдает следующую ошибку.
The requested URL /sig/28755155.png was not found on this server.
Мы должны быть рядом. _
Vhost выглядит так:
DocumentRoot /home/www-dota2
<Directory /home/www-dota2/>
Options Indexes MultiViews +SymLinksIfOwnerMatch
AllowOverride All
Order allow,deny
allow from all
</Directory>
1 ответ
Прежде всего, я бы порекомендовал вам написать более конкретное регулярное выражение: чтобы соответствовать /sig/28755155.png, я бы сделал:
RewriteRule ^/sig/([0-9]+\.(?:gif|png|jpg))$ index.php?aid=$1 [NC,L]
Помните, что ваше регулярное выражение ^ (. ) Sig / (.). (. *) $ Может совпадать с путями типа /somesig/foo/bar/123.png
Отвечая на ваш вопрос:
- ДА, вы можете поместить эти правила в файл htaccess вашей папки sig
- ДА правила в htaccess в папке sig вычисляются для любой подпапки (ej: /sig/foo/bar)
Надеюсь это поможет