#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: Пожалуйста, отметьте это как принятое