Установка страниц с определенным именем в URL на noindex

#wordpress #.htaccess

#wordpress #.htaccess

Вопрос:

для страницы WordPress я хочу установить для всех страниц, содержащих /test/page/ значение «noindex».

Моя попытка до сих пор:

 RewriteCond %{REQUEST_URI} .*/test/page/
RewriteRule .* - [E=MY_SET_HEADER:1]
Header set X-Robots-Tag "noindex, follow" env=MY_SET_HEADER
  

К сожалению, это не работает.
Я думаю, проблема в моем регулярном выражении
Кто может мне здесь помочь?

Ответ №1:

 Header set X-Robots tag "noindex, follow" env=MY_SET_HEADER
  

Это должно быть X-Robots-Tag , а не X-Robots tag .

 RewriteRule .* - [E=MY_SET_HEADER:1].
  

У вас также есть ошибочная точка в конце вашей RewriteRule директивы.

 RewriteCond %{REQUEST_URI} .*/test/page/
  

Регулярное выражение может быть упрощено, но в остальном оно по-прежнему соответствует любому URL, содержащему /test/page/ . Косые черты не должны быть экранированы обратной косой чертой, а .* префикс является излишним. ie. Это то же самое, что и просто /test/page/ .

Директивы mod_rewrite также должны предшествовать существующим директивам WordPress. Если вы разместили правило в конце вашего .htaccess файла (после WP front-controller), директива mod_rewrite просто никогда не будет обработана.

Это должно решить вашу проблему, однако ваше правило можно упростить. Вам не нужно использовать mod_rewrite здесь. Вы можете использовать mod_setenvif для установки вашего env var.

Например:

 SetEnvIf Request_URI "/test/page/" NOINDEX
Header set X-Robots-Tag "noindex, follow" env=NOINDEX
  

Если не использовать mod_rewrite, директивы необязательно должны располагаться в верхней части .htaccess файла.


Использование WordPress / Front-Controller

Поскольку вы используете WordPress и, следовательно, переписываете запрос через front-controller (т.Е. index.php ), Вам нужно будет вместо этого проверить переменную REDIRECT_NOINDEX env.

Например:

 SetEnvIf Request_URI "/test/page/" NOINDEX
Header set X-Robots-Tag "noindex, follow" env=REDIRECT_NOINDEX
  

Пока мы устанавливаем переменную NOINDEX env, когда запрос внутренне переписывается / перенаправляется (WordPress), переменная env переименовывается с помощью префикса REDIRECT_ . Таким образом, NOINDEX становится REDIRCT_NOINDEX после первого раунда обработки, когда Header директива обрабатывается (поздно).

Комментарии:

1. Извините — мой текстовый редактор добавил (изменил) точку и тег X-Robots. Исправил свой пост сейчас. К сожалению, это не работает с SetEnvIf

2. Под «не работает» вы имеете X-Robots-Tag в виду, что заголовок HTTP-ответа не отображается в ответе? Или вы получаете какую-то другую ошибку?

3. Правильно, я использую расширение Chrome Live http Headers

4. Если вы удалите env=NOINDEX аргумент, установлен ли заголовок? Попробуйте установить другой заголовок, например. X-TEST вместо этого — это устанавливается?

5. Очень хороший и хорошо объясненный ответ . @user11274144: Пожалуйста, отметьте это как принятое