Преобразование правил mod_rewrite в правила перезаписи IIS - PullRequest
0 голосов
/ 26 сентября 2010

Я использую http://github.com/lakshmivyas/hyde для создания своего веб-сайта, и он включает в себя правила .htaccess mod_rewrite, но я собираюсь самостоятельно размещать свой веб-сайт на сервере Windows с использованием IIS, поэтому я пыталсяимпортируйте существующие правила .htaccess в модуль перезаписи IIS, но импортированные им правила не работают правильно.

Примеры URL-адресов, которые я хотел бы переписать:

http://example.org.uk/about/

Rewrites to

http://example.org.uk/about/about.html

-----------

http://example.org.uk/blog/events/

Rewrites to

http://example.org.uk/blog/events.html

-----------

http://example.org.uk/blog/2010/11/foo-bar

Rewrites to

http://example.org.uk/blog/2010/11/foo-bar.html

каталоги и имена файлов являются общими и могут принимать любые значения.Вот копия .htaccess, которую я использую с Apache:

# initialize mod_rewrite
RewriteEngine on
RewriteBase /

# remove the www from the url
# RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

###  BEGIN GENERATED REWRITE RULES  ####

RewriteCond %{REQUEST_FILENAME}/index.html -f
RewriteRule ^(.*) $1/index.html

####  END GENERATED REWRITE RULES  ####

# listing pages whose names are the same as their enclosing folder's
RewriteCond %{REQUEST_FILENAME}/$1.html -f
RewriteRule ^([^/]*)/$ %{REQUEST_FILENAME}/$1.html

# regular pages
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.*$ %{REQUEST_FILENAME}.html

# set our custom 404 page
ErrorDocument 404 /404.html

Я пробовал различные модули ISAPI Rewrite, но они не увенчались успехом, поэтому я бы предпочел преобразовать правила в собственные правила IIS Rewrite,Любая помощь в получении этой сортировки очень ценится.

РЕДАКТИРОВАТЬ:

Я решил 2/3 правил, но я просто не могу работать, как раз следующее.

            <rule name="Imported Rule 1" stopProcessing="false">
                <match url="^([^/]+)/$" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{R:0}/{R:1}.html" matchType="IsFile" />
                </conditions>
                <action type="Rewrite" url="{R:0}/{R:1}.html" />
            </rule>

Что сопоставляет about/ с about/about.html, просто продолжает отображаться список каталогов.

1 Ответ

0 голосов
/ 26 ноября 2010

Я всегда стараюсь избегать таких ситуаций. Поэтому я просто использую URL rewriter, который позволяет мне вставлять правила Apache, так как они используют IIS. Это может быть ISAPI_Rewrite 3 (LITE-версия бесплатна) или Ape , которая также бесплатна для 3 или менее сайтов. С тех пор никогда не было такой головной боли, как у тебя.

...