Я использую короткий прокси-домен в сочетании с моим сайтом.Коротким доменом является hrci.me, а длинным доменом - reachchallenges.infectionist.com.hrci.me использует mod_rewrite и имеет правило, которое в значительной степени выполняет простое перенаправление с hrci.me на reachchallenges.infectionist.com, например:
hrci.me/x/y.php
будет перенаправлять на
reachchallenges.infectionist.com/x/y.php
Просто, как может быть.На главном сайте у меня есть больше правил, которые еще раз переписывают URL, предварительно его выполняя.Одним из примеров является скрипт на моем сайте challenge.php, который принимает один параметр chid , который представляет собой идентификатор вызова, связанный с дополнительной информацией в базе данных.Переданный как параметризованный скрипт, он будет выглядеть так: /challenge.php?chid=123
, но после перезаписи он будет выглядеть так: /challenge/123/Challenge+Title/
, где Challenge+Title
- это фактический заголовок элемента из базы данных.Существует также другой способ вызова одной и той же страницы, например: /ch123
, поэтому, по сути, вы можете получить доступ к странице 3 различными способами:
1. /challenge.php?chid=123
2. /challenge/123/Challenge+Title/
3. /ch123
Это на самом деле работает отлично, проблема, с которой я столкнулсяя хочу, чтобы URL-адреса, перенаправленные из hrci.me, сначала были переписаны так, чтобы они выглядели как №2 выше, поэтому пользователь должен щелкнуть hrci.me/ch123, а файл htaccess прочитает базу данных, получит заголовок для идентификатора вызова 123переписать URL-адрес на /challenge/123/Challenge+Title/
, а затем перенаправить его на reachchallenges.infectionist.com.Возможно ли что-то подобное?Можно ли читать из базы данных MySQL, используя htaccess, таким образом?
ОБНОВЛЕНИЕ : я добавил это в свой файл httpd.conf:
DBDriver mysql
DBDParams "host=*****,user=*****,pass=*****,dbname=*****"
RewriteMap hrci "dbd:SELECT title FROM challenges WHERE id = %s"
RewriteLog "/home/halo2freeek/rewrite.log"
RewriteLogLevel 3
Затем добавилa RewriteRule для одного из моих поддоменов, который я на самом деле не использую (для проверки):
RewriteEngine On
RewriteRule ^ch([0-9]{1,4})(/)?$ http://reachchallenges.infectionist.com/challenge/$1/${hrci:$1} [R=301,L]
Когда я посещаю этот путь на поддомене:
/ ch232
Он должен перенаправить на:
http://reachchallenges.infectionist.com/challenge/232/Challenge+Title
Но вместо этого он перенаправляет на:
http://reachchallenges.infectionist.com/challenge/232/
Без заголовка.Я делаю что-то неправильно?Нужно ли указывать RewriteEngine On
в файле httpd.conf?
ОБНОВЛЕНИЕ 2 : Хорошо, поэтому я добавил строку RewriteEngine On
и сохранил при попытке перезапустить Apache Iполучил эту ошибку:
RewriteMap: file for map hrci not found:/dh/apache2/apache2-ps54462/dbd:SELECT title FROM challenges WHERE id = %s
Похоже, что он полностью игнорирует часть dbd
и пытается прочитать все это как имя файла.Теперь я действительно не знаю, что я делаю неправильно.