Определенная пользовательская переменная в httpd.conf определяется как NULL в .htaccess - PullRequest
0 голосов
/ 10 декабря 2018

Итак, я хочу иметь другой пользовательский путь для .htaccess на моей машине и на моем работающем сервере.Вот почему я пытаюсь создать пользовательскую переменную в httpd.conf для использования в .htaccess.Я написал эту переменную в самом верху httpd.conf:

# Define a custom server base path for .htaccess RewriteBase
Define ServerBase "/PHP%20projects/sample"

И я получаю к ней доступ с .htaccess следующим образом:

<IfDefine ${ServerBase}>
    RewriteBase %{ServerBase}
</IfDefine>
<IfDefine !${ServerBase}>
    RewriteBase /

    RewriteCond %{HTTP_HOST} ^www\.(.*)
    RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://sample.com/$1 [R=301,L]
</IfDefine>


RewriteCond %{QUERY_STRING} !vardump
RewriteRule (.*) https://sample.com/$1?vardump&base=%{ServerBase} [R=301,L,QSA]

Я пытался отладить ее с помощьюпытаясь показать его как параметр в URL из RewriteRule.Показано как NULL.Что я сделал не так, чтобы он не показывал реальную стоимость?

1 Ответ

0 голосов
/ 10 декабря 2018

Нашел ответ!Я должен был использовать тот же хост, когда я хочу отладить сервер.Я исправил это, исправив часть vardump в моем .htaccess следующим образом:

RewriteCond %{QUERY_STRING} !vardump
RewriteRule (.*) https://%1/$1?vardump&base=${ServerBase} [R=301,L,QSA]

И не забывайте очищать кэш браузера каждый раз, когда вы отлаживаете.

Кажетсямы должны использовать ${ServerBase} для пользовательской переменной, объявленной с использованием Define var_name var_value.И мы должны использовать %{HTTP_HOST} для переменной по умолчанию.Обратите внимание на ${} и %{}.

...