Добавление “301 Перенаправления” к большому количеству файлов в IIS 6

Я нашел аналогично открытые работы хорошо, и легко установить.

1
задан 25 July 2009 в 00:28
4 ответа

Для предпринятого доступа к файлам, которые не существуют, можно поместить пользовательские 404 ошибки в каталог, который перенаправляет пользователя к URL для файла, Вы хотели бы их к доступу.

Если существуют другие файлы в том каталоге, необходимо будет поместить перенаправления на них на основе файла для файла. Это - просто способ, которым это, к сожалению. Если у Вас есть много файлов, Вы могли бы написать сценарий модификации метабазы для добавления перенаправления.

Править:

Если можно изменить ACLs NTFS на всех тех файлах, чтобы запретить пользователю от чтения их, Вы могли также отбросить пользовательские 401,3 ошибочных страницы на каталоге, также.

В противном случае затем попробуйте это:

@echo off
SET SOURCE_DIR=C:\path-to-directory-in-filesystem
SET ADSUTIL=cscript C:\inetpub\adminscripts\adsutil.vbs
SET METABASE_PATH=W3SVC/####/ROOT/path/to/site/directory
SET REDIRECT_URL=/foo/foo.txt

for /f "usebackq delims=" %%i in (`dir /b %SOURCE_DIR%`) do (
 %ADSUTIL% CREATE %METABASE_PATH%/%%i
 %ADSUTIL% SET %METABASE_PATH%/%%i/KeyType "IIsWebFile"
 %ADSUTIL% SET %METABASE_PATH%/%%i/HttpRedirect "%REDIRECT_URL%, PERMANENT"
)

Установите SOURCE_DIR на физический путь в файловой системе каталога с файлами, которые будут превращены в перенаправления. ADSUTIL, вероятно, установлен право, если Вы - установка запаса IIS 6. METABASE_PATH должен относиться к числу идентификатора сайта (### в образце, добраться, это от консоли управления IIS для Вашего сайта) и путь под корнем (оставьте/ROOT/там - необходимый). Наконец, REDIRECT_URL должен быть URL (может быть абсолютным или относительно корня сайта).

2
ответ дан 3 December 2019 в 22:52
  • 1
    Спасибо! К сожалению, существует несколько тысяч файлов. Действительно ли можно ли направить меня к достойному ресурсу для сценариев модификаций метабазы? –  Cody 24 July 2009 в 23:27
  • 2
    Там - имеют в. > smile< –  Evan Anderson 24 July 2009 в 23:54

Необходимо смочь использовать URL, переписывают модуль, чтобы сделать это. Существуют 2, что я знаю о для IIS6 и ранее, IIS7 имеет свой собственный модуль (наконец).

Можно взглянуть на ISAPI_Rewrite Геликона или ионические диалекты, которые Isapi Переписывают (также работы с IIS7). Я использую ионические диалекты, потому что это свободно, но Геликон переписывает правила, я верю карте непосредственно с mod_rewrite правилами модуля Apache, который является большой победой для него в целом.

У обоих есть способность обеспечить постоянные перенаправления, и правила являются базирующимся регулярным выражением. Я буду видеть, могу ли я соединить синтаксис для правила, которое касалось бы то, что Вы хотите сделать и отправить его вскоре.

0
ответ дан 3 December 2019 в 22:52

Другая опция (только, чтобы иметь его там), Вы, мог сказать IIS позволять ASP.NET обработать .html в том сайте, затем создать global.asax файл с кодом Application_BeginRequest, который проверяет URL и перенаправления соответственно.

0
ответ дан 3 December 2019 в 22:52

Вся эта модификация метабазы - тысячи файлов Вы говорите? Вы могли сделать это с одним подстановочным правилом в IIRF.

RedirectRule ^/directoryToRedirect/(.*)(?<!index\.html)$  /index.html  [L]

На английском языке это говорит для любого URL в каталоге directoryToRewrite, который НЕ является index.html, перенаправьте его к index.html.

Это работает независимо от того, сколько файлов Вы имеете, добавляете ли Вы новые файлы, удаляете файлы, безотносительно.

0
ответ дан 3 December 2019 в 22:52

Теги

Похожие вопросы