Intereting Posts
WP_Query: поиск сообщений с этим $ term или содержит $ term post_tag Как получить WordPress Категории Дата последнего обновления? базовый короткий код – почему 1-й абзац не завернут в тег p, но 2-й Permalink Перепишите, чтобы включить пользовательский таксономический термин Реорганизация пространств имен Исключить конкретный срок поиска Перевести аргументы пользователя, добавленного пользовательским кодом Почему jQuery не использует $, и как я могу это сделать (GLOBALY)? Удалите столбец «Комментарий» во всех пост-типах Почему WordPress 3.0.4 продолжает удалять содержимое файла .htaccess? Как синхронизировать с обновлением плагинов после того, как я сделал ручную оптимизацию? плагины ошибок learnpress в wordpress Пользовательские типы сообщений, переписывание URL-адресов на нескольких CPT get_template_part возвращает NULL Использование разных nav_menu_css_class для разных nav_walkers

В IIS остановите WordPress при сохранении моего файла web.config при вводе страницы конфигурации Permalinks

У меня есть сайт WordPress, установленный в IIS, и он работает нормально. В подпапке у меня есть и приложение ASP.NET, которое также работает отлично.

Перезапись URL-адреса WordPress вызывает ряд проблем в приложении, которые находятся во вложенной папке. Решение для этого просто: мой файл root.config выглядит так:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.web> <customErrors mode="Off"/> </system.web> <location path="." inheritInChildApplications="false"> <system.webServer> <rewrite> <rules> <rule name="wordpress" enabled="true" patternSyntax="Wildcard"> <match url="*" negate="false"/> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/> </conditions> <action type="Rewrite" url="index.php"/> </rule> </rules> </rewrite> </system.webServer> </location> </configuration> 

Главное здесь: inheritInChildApplications="false" внутри <location> . Это предотвратит распространение правил перезаписи на дочернее приложение ASP.NET, что наносит вред, как я уже объяснял ранее.

Все идет нормально.

Но представьте, что я просто вхожу в страницу конфигурации Permalinks, которая живет по этому пути: wp-admin/options-permalink.php .

В этом случае происходит что-то ужасное: WordPress автоматически считывает мой файл web-config, возможно, ищет тег <system.webServer> в <configuration> . Но этого нет, потому что я <system.webServer> в <location> .

Поскольку там нет правил перезаписи, WordPress просто добавляет блок <system.webServer> снова, заставляя его дублировать и сохраняет файл web.config.

Наличие двух блоков <system.webServer> в файле web.config приводит к тому, что веб-сайт разбивается с ошибкой с сообщением об ошибке 500. Журнал сервера скажет мне, что Config section 'system.webServer/rewrite/rules' already defined. Sections must only appear once per config file Config section 'system.webServer/rewrite/rules' already defined. Sections must only appear once per config file .

Пожалуйста, не то, что мне не нужно ударять «сохранить изменения» на странице конфигурации Permalinks, чтобы эта трагедия произошла, все, что мне нужно сделать, это ввести страницу. Затем WordPress выполнит все проверки и самостоятельно сохранит файл web.config.

Хотя я не планирую вводить эту страницу конфигурации, я считаю, что риск того, что вход на эту страницу случайно через год после создания веб-сайта вызовет эти ужасные 500 ошибок.

Поэтому после всего этого длинного поста, мой вопрос: знаете ли вы какие-либо методы или какие-либо конфигурации, которые заставят WordPress автоматически сохранять файл web.config при вводе страницы конфигурации Permalinks? Спасибо.

Solutions Collecting From Web of "В IIS остановите WordPress при сохранении моего файла web.config при вводе страницы конфигурации Permalinks"

Вы можете предотвратить «жесткий» флеш, который обновляет .htaccess (Apache) или web.config (IIS) с фильтром flush_rewrite_rules_hard .

Мы также можем использовать вспомогательную функцию __return_false .

 add_filter( 'flush_rewrite_rules_hard', '__return_false' ); 

Этот код можно поместить в свой собственный плагин или в файл functions.php темы.