Проблемы MOD_REWRITE Использование ISAPI_REWRITER на IIS6
-
29-09-2019 - |
Вопрос
Я надеюсь, что люди не IIS могут помочь мне на это, хотя этот вопрос, основанный на сервере IIS6, запущенного isapi_rewriter.
Ситуация заключается в том, что я работаю WordPress на IIS6, ISAPI_REWRITER используется для работы в качестве замены для MOD_REWRITE и функционирует правильно. Моя проблема в том, что когда я получаю его, чтобы переписать свои URL для WordPress (так что мне не нужен файл файла index.php в нем) он показывает 404. После многих поисков я нашел проблему, потому что часть ASP.NET Или что-то подобное) добавил EURL.AXD / [Случайную строку] к концу URL-адреса, и поэтому его подают в запрос WordPress и разбив его. Я установил шаблон WordPress для вывода запрошенного URL, и он выглядит что-то подобное:
http://www.example.com/index.php/about/eurl.axd/b552863f2d5e9841b5d8b79b44ac02e8/
Я полагаю, что это из-за постановления о поручении различных вещей в системе IIS, и виновник требуется для запуска другой части проекта. Я бы предпочел продолжать использовать isapi_rewriter для приятных URL, поэтому я хотел бы знать это:
Есть ли способ получить mod_rewrite для удаления eurl.axd / [string], прежде чем кормить его в систему?
Мой файл .htaccess в настоящее время появляется как таковой:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# The following line excludes folders from rewriting
RewriteCond %{REQUEST_URI} !^/folder-name/
RewriteRule ^/(.*)$ /$1 [NC,L]
Спасибо за всю помощь, это всегда очень ценится.
Редактировать: отрегулировали мою HTACCESS на основе предложений, и, похоже, хорошо работает от кратких испытаний, которые я провел. Опубликовали его ниже.
RewriteEngine on
RewriteBase /
# This is used to strip ASP.net eurl.axd bits
# from the URL so wordpress can use permalinks
# For the root
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule ^eurl\.axd/[0-9a-f]+/$ index.php [NC,L]
# For internal permalinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ index.php/$1 [NC,L]
Решение
Что-то вроде этого рядом с верхней частью вашего списка переписывания должно работать:
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1
Другие советы
Я использую следующее регулярное выражение как первый правило Ионики isapi Rewriter Для веб-сайтов работает на ASP.NET 4. на IIS 6. исправить проблемы, вызванные нарушение смены Введен с ASP.NET 4:
RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2
Это позвольте мне снова использовать URL-URL.
Обратите внимание, что вторая группа захватывает QueryString, если они присутствуют, и озадается его на переписанный URL.
И да, это особенность, а не ошибка.
Я бежал в аналогичную проблему с функцией расширения V4.0 ASP.NET меньше URL-адресов на II6 и нашел решение через провайдер модуля Rewrite ISAPI, то не требует отключения его. Лисьс и решение, когда мы испытали, это документировано здесь http://www.vanadiumtech.com/ourblog/post/2011/08/12/cause-of-eurlaxd.aspx.