Проблемы с mod_rewrite при использовании ISAPI_rewriter на IIS6 - PullRequest
0 голосов
/ 29 ноября 2010

Я надеюсь, что люди, не относящиеся к IIS, могут помочь мне в этом, хотя проблема, с которой я столкнулся, связана с сервером IIS6, на котором работает ISAPI_Rewriter.

Ситуация такова, что я использую Wordpress на IIS6, ISAPI_Rewriter используется для замены mod_rewrite и работает нормально. Моя проблема в том, что когда я получаю переписать мои URL для Wordpress (поэтому мне не нужно имя файла index.php), он показывает 404. После долгих поисков я обнаружил, что проблема была в том, что часть ASP.net ( или что-то подобное) добавлял eurl.axd / [random string] в конец 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]

Ответы [ 3 ]

1 голос
/ 29 ноября 2010

Что-то вроде этого в верхней части списка перезаписей должно работать:

RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1
0 голосов
/ 12 августа 2011

Я столкнулся с подобной проблемой с v4.0 ASP.Net без функции URL-адреса на II6 и нашел решение через провайдера ISAPI Rewrite Module, который не требует его отключения.Вопрос и решение в том виде, в каком мы его испытали, описаны здесь http://www.vanadiumtech.com/OurBlog/post/2011/08/12/Cause-of-eurlaxd.aspx

0 голосов
/ 10 февраля 2011

Я использую следующее регулярное выражение в качестве первого правила с Ionics Isapi Rewriter для веб-сайтов, работающих на ASP.NET 4 на IIS 6 для устранения проблем, вызванных критическим изменением , введенным в ASP.NET 4:

RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2

Позвольте мне снова использовать URL без расширений.

Обратите внимание, что вторая группа захватывает строку запроса, если она присутствует, и восстанавливает ее до переписанного URL.

И да, это функция, а не ошибка .

...