htmlpurifier nofollow работает только для сгенерированных ссылок - PullRequest
1 голос
/ 06 октября 2019

Я использую библиотеку очистителя HTML для форматирования комментариев моего сайта.

Однако я кое-что заметил. В моих настройках HTML.nofollow имеет значение true.

'HTML.Nofollow' => true,

Но когда я пишу ссылку на якорь, nofollow добавляться не будет. Но с сгенерированной ссылкой все будет работать нормально.

Пример ввода:

<a href="www.google.com">google</a>

https://www.yahoo.com

Вывод:

<p><a href="www.google.com">google</a></p>

<p><a href="https://www.yahoo.com" rel="nofollow">https://www.yahoo.com</a></p>

Вот мои настройки:

return [
    'encoding'      => 'UTF-8',
    'finalize'      => true,
    'cachePath'     => storage_path('app/purifier'),
    'cacheFileMode' => 0755,
    'settings'      => [
        'default' => [
            'HTML.Doctype'             => 'HTML 4.01 Transitional',
            'HTML.Allowed'             => 'b,i,u,ul,ol,li,p,blockquote,table,tr,th,td,a[href|title],sup,sub,span,code',
            'AutoFormat.AutoParagraph' => true,
            'AutoFormat.RemoveEmpty'   => true,
            'AutoFormat.Linkify' => true,
            'HTML.Nofollow' => true,
        ],

    ],

];

Я бы неплохо удалил как один из разрешенных элементов HTML, но по какой-то причине это означает, что сгенерированные URL больше не работают.

1 Ответ

2 голосов
/ 06 октября 2019

<a href="www.google.com">google</a>, поскольку в нем отсутствует схема (http://, https://, ftp:// и т. Д.), Является на самом деле ссылкой на что-то вроде http://example.com/www.google.com (в зависимости от того,находится в папке вашего сайта или нет). Поскольку nofollow обычно используется для предотвращения других сайтов от кражи ссылочного сока, относительные ссылки, подобные этой, вероятно, исключаются.

Попробуйте вместо этого что-то вроде этого:

<a href="https://www.google.com">google</a>

(В качестве бонуса ссылка будет работать таким образом.)

...