
Я пытаюсь создать зеркало сайта, но ссылка на css имеет следующий URL:http://127.0.0.1:2368/assets/css/screen.css?v=c44dc08367
Использование wget для загрузки сайта сохраняет css-файл с именем файлаscreen.css?v=c44dc08367
Я пробовал использовать --adjust-extension
флаг, но он сохраняет файл как screen.css?v=c44dc08367.css
Возможно ли сохранить его правильным способом, screen.css
используя wget?
Я использую GNU Wget 1.14, собранный на основе darwin12.5.0.
EDIT: Я не могу указать имя файла, так как я зеркалирую весь сайт, поэтому фактическая команда выглядит так. Ссылка css находится внутри страницы (которая автоматически извлекается wget)
wget \
--recursive \ # follow links to download entire site
--page-requisites \ # grab everything: css / inlined images
--no-parent \ # don't go to parent level
--directory-prefix static \# download contents to static/ folder
--no-host-directories \ # don't create domain named folder
--adjust-extension \
http://127.0.0.1:2368/
решение1
К сожалению, wget не будет делать никаких предположений о том, что вы хотите загрузить, пока вы не скажете ему об этом. Ему все равно, является ли ваш файл изображением, документом, сжатым файлом и т. д.
Файл сохраняется как то, чем заканчивается URL – то есть все, что угодно от последнего слеша до конца URL. В вашем случае это .css?v=c44dc08367. Часть после фактического расширения файла (.css) содержится в URL, но это параметр HTTP-запроса. Однако для wget он определит выходное имя файла.
Если вы хотите указать имя выходного файла для wget, добавьте опцию -O (заглавная буква O):
wget http://127.0.0.1:2368/assets/css/screen.css?v=c44dc08367 -O screen.css
Наконец, есть опция --content-disposition, которая может привести к установке правильного имени файла. Но это полностью зависит от сервера, который вы загружаете, отправляя правильную информацию заголовка.
За исключением следующих мест:Почему при получении изображения wget возвращает файл, а не изображение?