我在Apache 2服务器上运行PHP。如果url包含任何get参数,如https://example.com/?
或https://example.com/a.php?
或https://example.com/a.php?key=value
,我想将header("X-Robots-Tag: noindex", true);
添加到我的页面中。所以基本上,如果url包含?
charter,则需要添加标头。
有没有可能使用.htaccess
文件来实现它,以及如何做到这一点?或者有没有其他方法来实现这一点?
参考:https://yoast.com/x-robots-tag-play/
编辑
以下是现有的重写代码;
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^nps-benchmarks/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/$1 [P]
RewriteRule ^agency/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/mod1/$1 [P]
RewriteRule ^apps/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/mod2/$1 [P]
RewriteRule ^help-each-other/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/mod3/$1 [P]
RewriteRule ^customers-help-each-other/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/mod4/$1 [P]
RewriteRule ^de/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/multilanguage/de/$1 [P]
RewriteRule ^es/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/multilanguage/es/$1 [P]
RewriteRule ^fr/(.*)$ http://testing.mysite.com.s3-website-us-east-1.amazonaws.com/site/multilanguage/fr/$1 [P]
RewriteRule ^(wp-content/themes/my-site/assets/)(css|js)(/.+)(-v\d+\.\d+)\.(min)\.(js|css)$ $1/$2/$3.$5.$6 [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
1条答案
按热度按时间rqmkfv5c1#
例如
https://example.com/?
或https://example.com/a.php?
这两个示例中的问题是查询字符串为 empty,因此您无法使用标准的
QUERY_STRING
服务器变量检查此情况(“empty”和“not-exists”的计算结果相同,即 empty)。但是,您可以检查HTTP请求头第一行中的文字
?
(即查询字符串分隔符),如THE_REQUEST
Apache服务器变量中所包含的。在上面的第一个示例中,这将包含以下形式的字符串:
对于
/a.php?key=value
,这将是:我们可以使用mod_rewrite来检查这一点并设置一个环境变量,然后使用
header
指令根据是否设置了这个env var来有条件地设置所需的X-Robots-Tag
HTTP响应头。例如,在根
.htaccess
文件的顶部附近:这会在2xx个“OK”回应上设定信头。例如,它不会在404上设定信头,但404不会被索引,因此信头是多余的。不过,如果您特别需要在 all(non-2xx)回应上设定信头,请使用
always
条件。例如:请注意,这还取决于
.htaccess
文件中可能存在的其他指令。例如,如果存在导致重写引擎“循环”的mod_rewrite指令,则env var将被重命名为REDIRECT_QUERY_EXISTS
,您可能需要在header
指令中进行检查。