mån 2 nov. 2026 kl. 11:26 skrev Ivan Zhakov via dev <
[email protected]>:

> On Mon, 12 Oct 2026 at 18:04, Nathan Hartman <[email protected]>
> wrote:
>
>> On Fri, Oct 9, 2026 at 5:52 AM Evgeny Kotkov via dev
>> <[email protected]> wrote:
>> >
>> > Hi all,
>> >
>> > I noticed that a Google search for "subversion 1.15" [1] currently
>> shows the
>> > staging copy of the release notes as the first result, at least for me:
>> >
>> >   https://subversion-staging.apache.org/docs/release-notes/1.15.html
>> >
>> > It looks like our infra configuration for the staging subdomain does not
>> > prevent search engines from indexing it.  This is a problem for several
>> > reasons:
>> >
>> > - Users may land on staging pages, which can be unfinished or out of
>> >   sync with the main site.
>> >
>> > - Search engines may incorrectly treat the pages on the main site as
>> >   duplicates of the staging ones.
>> >
>> > Could someone please ask infra to look into this?  One option could be
>> to add
>> > a "X-Robots-Tag: noindex, nofollow" header for everything on the staging
>> > subdomain.
>> >
>> > [1]: https://www.google.com/search?q=subversion+1.15
>> >
>> >
>> > Thanks,
>> > Evgeny Kotkov
>>
>>
>> Confirmed, and good catch!
>>
>> Perhaps this was caused by the release notes being in the staging site
>> and not on the main site for an extended length of time.
>>
>> In any event, I agree that the staging site should not be indexed.
>>
>> I created Infra ticket 28512 for this [1].
>>
>> [1] https://issues.apache.org/jira/browse/INFRA-28512
>>
>> INFRA team suggested to use .htaccess.
>
> I have done the following:
> 1. Added X-Robots-Tag=noindex, nofollow for sites where SERVER_NAME !=
> subversion.apache.org
> 2. Added empty robots.txt for subversion.apache.org
> 3. Added robots-noindex.txt and configured RewriteRule to use it as
> robots.txt where SERVER_NAME != subversion.apache.org.
>
> So currently we have:
> $ curl https://subversion.apache.org/robots.txt
> [[[
> # Allow indexing by all User-Agent.
> User-Agent: *
> ]]]
>
> $ curl --head https://subversion.apache.org/
> [[[
> HTTP/1.1 200 OK
> Connection: keep-alive
> Content-Length: 14603
> Server: Apache
> Access-Control-Allow-Origin: *
> Content-Security-Policy: default-src 'self' data: blob: 'unsafe-inline'
> 'unsafe-eval' https://www.apachecon.com/
> https://www.communityovercode.org/ https://*.apache.org/
> https://apache.org/ https://*.scarf.sh/  ; script-src 'self' data: blob:
> 'unsafe-inline' 'unsafe-eval' https://www.apachecon.com/
> https://www.communityovercode.org/ https://*.apache.org/
> https://apache.org/ https://*.scarf.sh/  ; style-src 'self' data: blob:
> 'unsafe-inline' 'unsafe-eval' https://www.apachecon.com/
> https://www.communityovercode.org/ https://*.apache.org/
> https://apache.org/ https://*.scarf.sh/  ; frame-ancestors 'self';
> frame-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval'
> https://www.apachecon.com/ https://www.communityovercode.org/ https://*.
> apache.org/ https://apache.org/ https://*.scarf.sh/  ; worker-src 'self'
> data: blob:;
> Content-Type: text/html
> Via: 1.1 varnish, 1.1 varnish
> Accept-Ranges: bytes
> Age: 0
> Date: Mon, 02 Nov 2026 10:10:22 GMT
> X-Served-By: cache-hel1410027-HEL, cache-vie6362-VIE
> X-Cache: HIT, MISS
> X-Cache-Hits: 4, 0
> X-Timer: S1793614222.460933,VS0,VE37
> Vary: Accept-Encoding
> Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
> ]]]
>
> $ curl https://subversion-staging.apache.org/robots.txt
> [[[
> # Allow indexing by all User-Agent.
> User-Agent: *
> PS C:\Users\ivan> curl.exe
> https://subversion-staging.apache.org/robots.txt
> User-Agent: *
> Disallow: /
>
> # Explicitly block some Google crawlers that ignore '*' rule [1]
> # [1]:
> https://developers.google.com/crawling/docs/crawlers-fetchers/google-special-case-crawlers
> User-Agent: APIs-Google
> Disallow: /
>
> User-Agent: AdsBot-Google-Mobile
> Disallow: /
>
> User-Agent: AdsBot-Google
> Disallow: /
>
> User-Agent: Mediapartners-Google
> Disallow: /
> ]]]
>
> $ curl --head https://subversion-staging.apache.org/
> [[[
> HTTP/1.1 200 OK
> Connection: keep-alive
> Content-Length: 14603
> Server: Apache
> Access-Control-Allow-Origin: *
> Content-Security-Policy: default-src 'self' data: blob: 'unsafe-inline'
> 'unsafe-eval' https://www.apachecon.com/
> https://www.communityovercode.org/ https://*.apache.org/
> https://apache.org/ https://*.scarf.sh/  ; script-src 'self' data: blob:
> 'unsafe-inline' 'unsafe-eval' https://www.apachecon.com/
> https://www.communityovercode.org/ https://*.apache.org/
> https://apache.org/ https://*.scarf.sh/  ; style-src 'self' data: blob:
> 'unsafe-inline' 'unsafe-eval' https://www.apachecon.com/
> https://www.communityovercode.org/ https://*.apache.org/
> https://apache.org/ https://*.scarf.sh/  ; frame-ancestors 'self';
> frame-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval'
> https://www.apachecon.com/ https://www.communityovercode.org/ https://*.
> apache.org/ https://apache.org/ https://*.scarf.sh/  ; worker-src 'self'
> data: blob:;
> X-Robots-Tag: noindex, nofollow
> Content-Type: text/html
> Via: 1.1 varnish, 1.1 varnish
> Accept-Ranges: bytes
> Age: 0
> Date: Mon, 02 Nov 2026 10:11:02 GMT
> X-Served-By: cache-hel1410034-HEL, cache-vie6365-VIE
> X-Cache: MISS, MISS
> X-Cache-Hits: 0, 0
> X-Timer: S1793614262.087472,VS0,VE37
> Vary: Accept-Encoding
> Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
> ]]]
>
> I think it's good enough.
>
> Thanks everyone for suggestions!
>

Thank you, LGTM!

/Daniel

>

Reply via email to