Здравствуйте!
Изучаю проблему уже достаточно долго, продвинулся в решении, но потом уперся в стену. Найти ифу пока не могу (да и надоело уже ковыряться в IIS), нужна помощь.
Суть проблемы:
Сайт на Joomla 1.5.23
Веб-сервер IIS7.5
Все бы ничего, да вот решил начать СЕО оптимизацию. И началось ))
Простое включение СЕО настроек в Joomla ничего, конечно, не дало. Правил-переправлял .htaccess - бесполезно. Порылся в инете. Поставил на сервер модуль URL Rewrite. Импортировал в него правила из .htaccess- все проглотил за исключением
"RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]" - говорит
"<!--The rule cannot be converted into an equivalent IIS format because of unsupported flags: E-->" - ну хрен с ним, заккоментировал и применил. Все ОК. СЕО в Joomla начало как-то корявенько работать, правда только без включенного mod_rewrite (хотя он вроде как для apache только используется, так что бог с ним), иначе при включении этого модуля все внутренние ссылки по сайту приводят на главную страницу, хотя в адресной строке прописывается нужная страница...
Теперь имею две проблемы, которые не могу самостоятельно решить:
1. категорически не хочет открываться главная страница mysite.com - ошибка 404, исключительно только mysite.com/index.php
2. все адресные строки имеют вид
http://www.mysite.com/index.php/forum например, то есть везде присутствует этот чертов index.php. А дополнительная вложенность для СЕО вроде бы как-то не очень полезна..
Как это все возможно победить?
Просьба знающих людей откликнуться!
заранее предвидя вопросы, выкладываю .htacces
##
# @version $Id: htaccess.txt 14401 2010-01-26 14:10:00Z louis $
# @package Joomla RE
# @localized Авторские права (C) 2005 - 2010 Joom.Ru - Русский дом Joomla! Все права защищены.
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! - свободное программное обеспечение.
# Последнее изменение этого файла - 01.05.2010
##
# Установка кодировки сайта по умолчанию. При необходимости, закомментируйте.
# Строка решает проблему с "крякозябрами" в редакторе TinyMCE и текста лицензии при установке
# на Денвере и некоторых серверах с жестко прописанной кодировкой. Это на 99,9% работающее решение.
# После переименования этого файла htaccess.txt в .htaccess проблема решится.
# Если проблема осталась - перечитайте предыдущее предложение (возможно неправильно переименовали).
AddDefaultCharset utf-8
# Следующие строки - попытка исправить настройки PHP
# для полного соответствия системным требованиям Joomla.
# Раскомментируйте (символ комментария - #) нужные строки,
# если настройки вашего хоста не соответствуют рекомендациям
# системных требований Joomla.
# При возникновении 500 ошибки сервера, закомментируйте строку, вызывающую
# ошибку, или все строки с php_flag.
# php_flag register_globals Off
# php_flag display_errors Off
# php_flag file_uploads On
# php_flag allow_url_fopen off
# php_flag magic_quotes_gpc On
# php_flag magic_quotes_runtime Off
# Пример явного указания каталога для записи сессий:
# Для Windows - c:/temp
# для UNIX - /tmp
# Указанный каталог должен физически существовать и быть доступен для записи
# При необходимости, раскомментируйте строку ниже этой
# php_value session.save_path c:/temp
#####################################################
# ПРОЧТИТЕ ПОЛНОСТЬЮ, ЕСЛИ БУДЕТЕ ИСПОЛЬЗОВАТЬ ЭТОТ ФАЙЛ
#
# Строка ниже этого раздела: 'Options +FollowSymLinks' может вызвать проблему
# при некоторых конфигурациях сервера. Она необходима для использования модуля
# Apache mod_rewrite, но может быть уже настроена администратором вашего
# сервера и изменение этого параметра в .htaccess может быть запрещено.
# Если эта директива вызывает ошибку сервера, то закомментируйте строку
# (добавьте символ # в начало строки), перезагрузите в браузере сайт и
# протестируйте работу SEF-ссылок. Если они работают, то вам не надо ничего
# менять здесь, т.к. всё уже настроено администратором сервера.
#
# Строки, которые можно раскомментирвать (и использовать) имеют только один #.
# Строки с двумя символами ## раскомментировать не надо. В разделах, которые вы
# не используете, все строки должны начинаться с символа #
#
#####################################################
## Может быть закомментировано, если вызывает ошибку сервера. Смотрите примечания выше.
Options +FollowSymLinks
#
# Включение mod_rewrite
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /index\.php\ HTTP/
RewriteRule ^index\.php$ mysite.com/ [R=301,L]
Redirect 301 /home mysite.com/
### Последние 3 строчки добавил, вычитав где-то в сети, но, к сожалению, тоже не помогло.
########## Начало - Правила обработки запросов для блокировки распространенных эксплоитов
## Если у вас возникли проблемы с вашим сайтом, используйте ниже описанные операции
## Они пытаются заблокировать самые распространенные эксплоиты Joomla!
#
## Код запрета доступа к xml-файлам расширений (раскомментируйте для активации)
#<Files ~ "\.xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## Конец кода запрета доступа к xml-файлам
# Блокировать любой запрос, пытающийся установить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Блокировать любой запрос, пытающийся испортить base64_encode через URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Блокировать любой запрос, содержащий тег <script> в URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Блокировать любой запрос, пытающийся установить значение глобальных переменных PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Блокировать любой запрос, пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Перенаправлять заблокированные запросы на страницу 403 с запрещенными ошибками!
RewriteRule ^(.*)$ index.php [F,L]
#
########## Конец правил обработки для блокировки распространенных эксплоитов
# Раскомментируйте следующую строку, если URL вашего web-сервера
# не связаны напрямую с физическими путями файлов.
# Обновите ваш каталог Joomla (используйте "/" для обозначения корня сервера)
# RewriteBase /
########## Начало раздела SEF ядра Joomla!
#
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## Конец раздела SEF ядра Joomla!
########## Начинаем запись правил чтобы заблокировать основные эксплойты
#
# Блокируем любой скрипт пытающийся получить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Блокируем любой скрипт пытающийся отправить любое дерьмо чере base64_encode по URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Блокируем любой скрипт который содержит тег < script> в URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Блокируем любой скрипт, который пытается установить глобальную переменную PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Блокируем любой скрипт пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
# Блокируем любой скрипт, который пытается установить sbp or sb_authorname чере URL (баг simpleboard)
RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
# Отправляем все заблокированный запросы на главную с ошибкой 403 Forbidden!
RewriteRule ^(.*)$ index.php [F,L]
#
########## Заканчиваем запись правил чтобы заблокировать основные эксплойты
#
##### Начинаем запись правил для увеличения скорости работы сайта
#
SetOutputFilter DEFLATE
Header set Expires "max-age=29030400, public"
Header unset ETag
FileETag None
#
ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A1200
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600
#
########## Заканчиваем запись правил для увеличения скорости работы сайта
и webconfig (тот что IIS сам создает после импорта правил из .htaccess)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="Index.php" />
<add value="Index.html" />
<add value="Index.htm" />
<add value="Index.cfm" />
<add value="Index.shtml" />
<add value="Index.shtm" />
<add value="Index.stm" />
<add value="Index.php3" />
<add value="Index.asp" />
<add value="Index.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="Default.aspx" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^index\.php$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{THE_REQUEST}" ignoreCase="false" />
</conditions>
<action type="Redirect" url="arma2club.com/" redirectType="Permanent" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="(\<|%3C).*script.*(\>|%3E)" />
<add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
</conditions>
<action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="Imported Rule 3">
<match url="(.*)" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_ACCEPT_ENCODING}" pattern="gzip" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{URL}" pattern="^/index.php" ignoreCase="false" negate="true" />
<add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
<rule name="Imported Rule 4" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|%3D)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="base64_encode.*(.*)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="(<|%3C).*script.*(>|%3E)" />
<add input="{QUERY_STRING}" pattern="GLOBALS(=|[|%[0-9A-Z]{0,2})" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="_REQUEST(=|[|%[0-9A-Z]{0,2})" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="sbp(=|%20|%3D)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="sb_authorname(=|%20|%3D)" ignoreCase="false" />
</conditions>
<action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Заранее спасибо за любую помошь! )