У меня возникла интересная проблема с переходом на многосайтовый WordPress 3.1.1 и правилами перезаписи URL. маршрутизация index.php, а также правила ms-files.php? file = не работают по всем направлениям. Сайт ROOT имеет функциональность, которая работает, когда вы перенаправляете постоянные ссылки через index.php. (edit: Это также распространено на сетевых сайтах, из того, что я вижу, Правило 7 является виновником сбоя здесь.)
Правило для медиа (правило 2) также не работает. Сгенерированная ссылка возвращает ошибку стиля 404 "упс не найдена".
Все выглядело правильно в разделе правил, добавленном ниже:
<rule name="WordPress Rule 1" stopProcessing="true">
<match url="^index\.php$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="WordPress Rule 2" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
<action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
</rule>
<rule name="WordPress Rule 3" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
<action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
</rule>
<rule name="WordPress Rule 4" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="WordPress Rule 5" stopProcessing="true">
<match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" />
<action type="Rewrite" url="{R:1}" />
</rule>
<rule name="WordPress Rule 6" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="WordPress Rule 7" stopProcessing="true">
<match url="." ignoreCase="false" />
<action type="Rewrite" url="index.php" />
</rule>
Вы можете просмотреть выставленное поведение, посетив: UB News Staging site 1 UB News Staging Site 2
Обратите внимание на промежуточном сайте 2, как СМИ не работают правильно. Однако, когда вы переходите по следующей ссылке, формат работает, и фотография отображается так, как должна. http://staging.business-school-online.com/news/wp-includes/ms-files.php?file=2011/04/online-education-300x198.jpg
изменить: созданная WP ссылка http://staging.business-school-online.com/news/files/2011/04/online-education-300x198.jpg
Может ли кто-нибудь дать некоторое представление о неправильном правиле перезаписи URL? согласно регулярному выражению, структура верна.
Я не работал со ссылками на wordpress как таковыми, но давайте начнем с правила медиа. Кажется, в действии не хватает двух вещей. У него нет / news /, который доступен в {R: 1}, и он не учитывает -300x198. Не учитывая размер изображения, это позаботится о корне:
<rule name="WordPress Rule 2" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
<action type="Rewrite" url="{R:1}wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
</rule>
Что касается размера изображения, если вы можете отредактировать исходные ссылки, которые будут идеальными, в противном случае для вашего URL-адреса совпадения просто нужно будет вытащить .jpg, а в действии добавить размер изображения плюс .jpg специально.
Три хороших варианта устранения неполадок: