Абсолютный URL в сотнях файлов переписать - PullRequest
0 голосов
/ 24 сентября 2019

Я создал дамп из WayBack Machine, чтобы клиент мог просматривать свой старый сайт, чтобы создать контент-план.Я загрузил резервную копию в / ~ xxxxxxxx /, но так как все css и js в сотнях файлов закодированы следующим образом:

<link href="/skins/FixedSize/styleSheets/style.css"

Это приводит к 404, потому что / ~ xxxxxx / игнорируется.

Я попробовал следующее, но не повезло.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? /~xxxxxxxx/ [R=301,L]

Мне нужен способ добиться этого без изменения 470 HTML-файлов.

1 Ответ

0 голосов
/ 24 сентября 2019

Вероятно, это то, что вы пытались выразить:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)$ /~xxxxxxxx/$1 [END,QSA]

Однако вы должны знать, что это может конфликтовать с другим контентом, который вы публикуете на этом http-хосте.Вероятно, есть причина, по которой вы создали эту папку в первую очередь вместо использования хоста DOCUMENT_ROOT, который предотвратил бы текущую проблему.Что приводит к альтернативному предложению: почему бы вам просто не использовать отдельный http-хост, а другой «поддомен», как его иногда называют?

В любом случае, , если вы хотите попробовать вышеуказанную реализацию, обратите внимание также на следующие дополнительные советы:

В случае получения внутренней ошибки сервера (http status 500Если вы воспользуетесь приведенным выше правилом, то, скорее всего, вы используете очень старую версию сервера Apache http.В этом случае вы увидите определенный намек на неподдерживаемый флаг [END] в файле журнала ошибок http-серверов.Вы можете попытаться обновить или использовать более старый флаг [L], он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.

Эта реализация также будет работать в конфигурации хоста http-серверов или в файле динамической конфигурации (файл ".htaccess").Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на хосте http.Если вы используете динамический файл конфигурации, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и находилась в папке DOCUMENT_ROOT хоста.

И общее замечание: вы всегда должны предпочитать размещать такие правила в конфигурации хоста http-серверов вместо использования файлов динамической конфигурации (".htaccess").Эти динамические конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера.Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...