ЗДРАВСТВУЙ! У меня есть IIS6 на сервере win 2003 с одним веб-сайтом www.example-one.com. Я включил IIRF, и все работает очень хорошо (также благодаря Чистый URL-адрес Drupal на IIS)
На том же сервере у меня также есть веб-сайт www.example-two.com/mysite. но я не могу включить cleanURL на этом. Если я добавлю правила перезаписи, предложенные для подпапок (та же ссылка, что и выше), cleanURLS будет работать на этом сайте, но перестанет работать на другом. Думаю, выполняется только последняя строка.
Я не настоящий системный администратор (меня назначили обслуживать этот сервер, потому что никто другой не сделал бы этого), может ли кто-нибудь помочь мне написать правильные правила перезаписи для IIRF, чтобы включить чистые URL-адреса на обоих сайтах?
Заранее большое спасибо.
Проведя небольшое дополнительное исследование, я узнал, что флаг «L» «указывает IIRF не обрабатывать больше шаблонов, если текущий соответствует». Поэтому моим решением было изменить iirf.ini из приведенного выше потока следующим образом:
# Do not pass to drupal if the file or directory exists
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Handle query strings on the end
# firstly for the subfolder without the L flag
RewriteRule /mysubfolder/(.*)\?(.*)$ /mysubfolder/index.php\?q=$1&$2 [I]
# then for the root
RewriteRule /(.*)\?(.*)$ /index.php\?q=$1&$2 [I,L]
# now pass through to the generic handler
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# firstly for the subfolder without the L flag
RewriteRule ^/mysubfolder/(.*)$ /mysubfolder/index.php?q=$1 [I]
# then for the root
RewriteRule ^/(.*)$ /index.php?q=$1 [I,L]
HTH.