У меня есть некоторые условия и правила в моем .htaccess:
RewriteCond %{DOCUMENT_ROOT}/assets/img$1/.$2.$4/$3.$4 -f
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ assets/img$1/.$2.$4/$3.$4 [NC]
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ assets/img/image.php?path=$1&file=$2.$4&template=$3 [NC,L,QSA]
Регулярное выражение корректно (проверено и соответствует, также в этом .htaccess [1]). Переменные $ 1, $ 2, $ 3 и $ 4, тем не менее, пусты. И я не уверен, почему они таковы.
Некоторое время назад я включил каждый сайт с его собственной конфигурацией vhost в / etc / apache2 / sites-available /, но через некоторое время я автоматизировал его с помощью ServerAlias и VirtualDocumentRoot:
ServerAlias *.localhost
VirtualDocumentRoot "/var/www/%1/public"
Это автоматически сопоставленный поддомен.localhost с / var / www / subdomain / public. Кроме того, мне нужно было настроить мой .htaccess. Мне пришлось вставить RewriteBase
RewriteBase /
Это вызвало (я думаю), что мои RewriteRules больше не работали. Это правда? И если да, то как я могу изменить их на работу снова?
PS [1] Я подтвердил это с помощью этого RewriteRule:
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ script.php?1=$1&2=$2&3=$3&4=$4 [L]
Когда вы проверяете параметры в скрипте ($ _GET), их ключи существуют в $ _GET, но все они содержат пустые строки.