환경 변수를 사용할 때 사이트 URL이 올바르게 생성되지 않습니다.
다중 사이트 설정 작업 중입니다 (현지화 된 웹 사이트 용). 내 .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
등
이 설정은 @web
CP 에서 별칭을 사용할 때 잘 작동했습니다 . env 변수와 함께 작동하지 않는 이유는 무엇입니까? env 변수로 전환 한 유일한 이유는 @web
캐시 포이즈 닝으로 인해 별칭 을 사용하지 않는 것이 좋습니다 .
나는 이미 보았다 https://github.com/craftcms/cms/issues/3719및 base을 출력 환경 변수
내 문제도 해결되지 않았습니다 ...
답변
당신이하지 않으면 캐시 중독은 일어날 하드 설정 하여 @web
수동으로 별칭을하고 자동으로 결정됩니다.
다음 config/general.php
과 같이 설정하십시오 .
'aliases' => [
'web' => getenv('SITE_BASE_URL'),
],
그런 다음 제어판에서 사용하도록 되돌릴 수 있습니다.
왜 이런 일이 발생했는지; 별칭으로 할 수있는 방식으로 환경 변수에 추가 할 수 없으므로 http://$SITE_BASE_URL/en
문자열이되고 변수 측면이 사라집니다.
정의 할 때 CP에서있는 그대로$SITE_BASE_URL
만 사용할 수 있으므로 사이트에 대한 변수를 사용하려면 각 사이트 / 언어에 대해 하나씩 정의해야합니다.