환경 변수를 사용할 때 사이트 URL이 올바르게 생성되지 않습니다.

Nov 17 2020

다중 사이트 설정 작업 중입니다 (현지화 된 웹 사이트 용). 내 .env파일에서 SITE_BASE_URL변수를 정의했습니다 . 그런 다음 제어판에서, 그 환경 변수 (예를 들어, 각 사이트의 기본 URL을 설정 http://$SITE_BASE_URL/en, http://$SITE_BASE_URL/nl등 각 언어에 대한).

그러나 Twig 템플릿에서 URL을 생성해야 할 때이 환경 변수가 구문 분석되지 않는 것 같습니다. 다음과 같은 HTML이 생성됩니다 <a href="http://$SITE_BASE_URL/en/services">...</a>.

나뭇 가지 템플릿의 예 :

{% set pages = [
    craft.entries.section("services").one(),
    craft.entries.section("products").one(),
] %}

{% for page in pages %}
<a href="{{ page.url }}">{{page.title}}</a>
{% endfor %}

이것은 나 URL을 좋아 제공 http://$SITE_BASE_URL/en/services, http://$SITE_BASE_URL/en/products

이 설정은 @webCP 에서 별칭을 사용할 때 잘 작동했습니다 . env 변수와 함께 작동하지 않는 이유는 무엇입니까? env 변수로 전환 한 유일한 이유는 @web캐시 포이즈 닝으로 인해 별칭 을 사용하지 않는 것이 좋습니다 .

나는 이미 보았다 https://github.com/craftcms/cms/issues/3719및 base을 출력 환경 변수

내 문제도 해결되지 않았습니다 ...

답변

2 Oli Nov 17 2020 at 21:02

당신이하지 않으면 캐시 중독은 일어날 하드 설정 하여 @web수동으로 별칭을하고 자동으로 결정됩니다.

다음 config/general.php과 같이 설정하십시오 .

'aliases' => [
    'web' => getenv('SITE_BASE_URL'),
],

그런 다음 제어판에서 사용하도록 되돌릴 수 있습니다.

왜 이런 일이 발생했는지; 별칭으로 할 수있는 방식으로 환경 변수에 추가 할 수 없으므로 http://$SITE_BASE_URL/en문자열이되고 변수 측면이 사라집니다.

정의 할 때 CP에서있는 그대로$SITE_BASE_URL 만 사용할 수 있으므로 사이트에 대한 변수를 사용하려면 각 사이트 / 언어에 대해 하나씩 정의해야합니다.