Scroll

Проблема с прямыми ссылками на IIS серверах.

Если у вас IIS сервер и у вас возникают проблемы с открытием страниц сайта используя прямые ссылки (404 ошибка) - в данном случае вам нужно попробовать описанный ниже метод решение этой проблемы.
В связи с тем, что Moto CMS генерирует код страницы динамически, необходима обработка адресов (URL rewrite) для корректной работы прямых ссылок на сайте. На Linux серверах обработка адресов выполняется через Apache mod_rewrite модуль и все правила для обработки адресов находятся в файле .htaccess  Фаил .htaccess - это конфигурационный фаил сервера Apache и поэтому он не работает на серверах IIS.

На IIS сервере должен быть использован аналочиный модуль (например вот этот). На IIS7 вы можете импортировать правила файла .htaccess без проблем. Если у вас есть доступ в диспетчер IIS (IIS manager), войдите в него, перейдите к вашему доменному имени и откройте секцию правила обработки адресов (Url-rewrite rules). Потом используйте кнопку "импротировать" (import) - вам необходимо скопировать правила из прикрепленного файла .htaccess. После этого правила обработки адресов будут автоматически импортированы в фаил web.config (фаил web.config выполняет ту же функцию на серверах IIS, что и фаил .htaccess на серверах Apache).
Ниже представлена копия правил обработки адресов находящихся в .htaccess файле:

<IfModule mod_rewrite.c> 
RewriteEngine On

## uncomment the following line, if you are having trouble 
## getting no_script_name to work 
RewriteBase /

## remove trailing slash 
#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteCond %{REQUEST_URI} ^(.+)/$ 
#RewriteRule ^(.+)/$ $1 [R=301,L]

## turn off index.html, it is for offline mode 
RewriteRule ^.*index.html$ index.php [QSA]

## no, so we redirect to our front web controller 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule>

Пожалуйста имейте ввиду, что некоторые правила отключены (закоментированны) по умолчанию. Для включения этих правил - вам нужно удалить знак (#) перед ними.

Если модуль обработки адресов подключен на вашем сервере, вам необходимо будет импортировать представленные выше правила обработки адресов в web.config фаил на вашем сервере. Но сперва данные правила должны быть переделанны для корректной работы на IIS сервере. В данной инструкции детально описано как это сделать.

В том случае, если у вас нет доступа в диспетчер IIS (IIS manager) - вы можете загрузить прикрепленный web.config фаил. Пожалуйста загрузите данный фаил в корневую папку шаблона на вашем сервере. В том случае если модуль обработки адресов установлен на вашем сервере - прямые ссылки должны работать корректно.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 2 из 2
Еще есть вопросы? Отправить запрос

Комментарии