私はのユーザのページに基づいてhreflang
タグを出力するように取り組んでいます。現在、私はpreg_match()
を使用して、特定のパターンに再度要求されたURLを照合しています。私はページwww.mydomain1.com/en-gb/company
を訪問するとき、それは上記のタグを出力hreflangの正規表現preg_match()
<?php if (preg_match("/^\/en-gb\/company/i", $url)): ?>
<link rel="alternate" href="https://www.mydomain1.com/en-gb/company/" hreflang="en-gb" />
<link rel="alternate" href="https://www.mydomain1.com/company/" hreflang="en" />
<link rel="alternate" href="https://www.mydomain1.com/company/" hreflang="x-default" />
<?php endif; ?>
:それは出力に関連するタグと一致した場合...
だから私はこのような何かを持っています。別のURL www.mydomain1.com/en-gb/company/stats
もあります。だから私は、このURLのために別のブロックを書いた:
<?php if (preg_match("/^\/en-gb\/company\/stats/i", $url)): ?>
<link rel="alternate" href="https://www.mydomain1.com/en-gb/company/stats" hreflang="en-gb" />
<link rel="alternate" href="https://www.mydomain1.com/company/stats" hreflang="en" />
<link rel="alternate" href="https://www.mydomain1.com/company/stats" hreflang="x-default" />
<?php endif; ?>
は、しかし、このページが出力されます最初
if statement
から
hreflangtags
のすべて、決して第二に入ります。私は
regular Expression
が間違っていることを知っていますが、正確にどこを指摘することはできません。私は解決するために何か助けていただければ幸いです。
あなたのソリューションをありがとう、それは良いようです - それに関する1つの質問...私は例えば/会社/ aboutと/会社/連絡先などのように多くの子ページがある場合私は追加する必要があります複数の「否定的な先読み」??? – Javacadabra
これは、除外したい内容によって異なります。入力の最後にある '/ en-gb/company'と最初の正規表現をマッチさせたい場合は、パラディンの解法(' preg_match( "/^\/en-gb \会社\ /?$/i "、$ url)')。しかし、はい、代替案を追加することができます: '(?!\ /(?:stats | contact | etc)(?:\/| $))' –