Mod_rewrite, сочетающий SEO дружественные URL и CDN - PullRequest
2 голосов
/ 21 января 2020

Я уверен, что должен быть разумный способ обойти это, но я просто не могу понять это. Я использую mod_rewrite для создания SEO-дружественных имен файлов и переключения на наш CDN. Я могу сделать их по отдельности, но вместе они отменяют друг друга

Мы используем mod_rewrite (в htaccess) для создания SEO-дружественных имен файлов. Так, например: -

RewriteRule ^ thumbnails / ([0-9] +) / ([^ /] +). Jpg $ /thumbnails/$1/image.jpg [N C , L]

карты https://www.example.com/thumbnails/123/my-image-of-a-puppy.jpg на https://www.example.com/thumbnails/123/image.jpg

Все это прекрасно работает. Но мы также используем mod_rewrite для извлечения изображений из CDN, поэтому мы используем что-то вроде этого: -

RewriteRule ^ (. *). (Jpeg | jpg | png) $ https://cdn-w.example.com% {REQUEST_URI} [R = 301, N C, QSA, L]

Теперь mod_rewrite выполняет внешнее перенаправление 301 (или 302, если я пропускаю бит R = 301).

Это тоже хорошо работает, но, что касается Google, https://www.example.com/thumbnails/123/my-image-of-a-puppy.jpg просто перенаправляется на https://cdn-w.example.com/thumbnails/123/image.jpg, что отменяет дружественное для SEO имя файла, не так ли ??

Я что-то упустил?

1 Ответ

0 голосов
/ 21 января 2020

Если вы используете модификатор [P] для ссылки на CDN, он должен работать так, как вы намереваетесь.

Используйте этот флаг для достижения более мощной реализации директивы ProxyPass, чтобы отобразить удаленный контент в namespace локального сервера.

Таким образом, URL-адрес должен оставаться таким же, как и в пути, с содержимым из CDN.

Mod Proxy

...