--=REKLAMA=--

Włączanie prostych adresów na serwerach IIS

Z Joomla!WikiPL

Wersja Zwiastun (dyskusja | edycje) z dnia 02:24, 16 lis 2013

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)


Proste adresy internetowe nazywane też czytelnymi dla człowieka (human-readable), czystymi albo przyjaznymi dla wyszukiwarek (Search Engine Friendly, SEF) to adresy URL, które mają sens zarówno dla ludzi, jak i wyszukiwarek, ponieważ objaśniają ścieżki do stron, na które wskazują. Człowiek może je łatwo zapisać, zapamiętać i przeczytać, a robot wyszukiwarki zidentyfikować na ich podstawie strukturę witryny i prawidłowo ją zaindeksować.

Od wersji 1.5, Joomla! jest zdolny do tworzenia i przetwarzania adresów URL w dowolnym formacie, w tym adresów przyjaznych dla wyszukiwarek. Funkcja ta nie jest zależna od translacji (przepisywania) URL przez serwer WWW, działa, nawet jeśli Joomla jest zainstalowany na innym serwerze niż Apache z modułem mod_rewrite. Proste adresy tworzone są według ustalonego wzorca, ale użytkownik może sam zdefiniować krótki tekst opisowy (alias) dla każdego segmentu adresu URL.

Wewnętrzna, lokalna część prostego adresu URL (część po nazwie domeny) nazywa się trasą (route. Dlatego tworzenie i przetwarzanie adresów SEF nazywane jest dalej trasowaniem (routing), a odpowiedni kod nazywany jest ruterem (router).

Ten artykuł dotyczy stosowania prostych adresów na serwerach platformy Windows - IIS i IIS7.

Joomla 2.5 Począwszy od Joomla! 2.5, obsługa prostych adresów jest domyślnie włączona. Joomla 1.5 We wcześniejszych wersjach konieczne było włączenie obsługi prostych adresów w konfiguracji globalnej witryny. Poniższe instrukcje są nadal aktualne, jeśli chcesz korzystać z modułu Apache mod_rewrite/przepisywania adresów URL.


Jeżeli korzystasz z PHP działającego na serwerze IIS, możesz skorzystać z własnego wewnętrznego mechanizmu serwera IIS przepisującego adresy URL na proste za pomocą pliku web.config podobnego do przedstawionego poniżej.

Możesz utworzyć plik samodzielnie lub skorzystać z GUI w menadzerze IIS7. Możesz importować reguły z .htaccess za pomocą GUI/wizard.

Funkcja ta wymaga obecności IIS URL Rewrite Module (Ponowne zapisywanie adresów w wersji 2.0), który nie należy do systemu Windows. Można go pobrać za darmo ze strony produktów Microsoft.

GUI

Jeśli moduł IIS URL Rewrite jest zainstalowany, na stronie menedżera będzie narzędzie do "Zapisywania adresów URL" ("URL Rewrite"), widoczne w zestawie konfigurowalnych modułów usług IIS. Interfejs jest w dużej mierze oczywisty. Wspierane są wyrażenia regularne, symbole wieloznaczne i dokładne dopasowanie.

Zaloguj się na zaplecze, otwórz stronę Konfiguracja globalna, włącz obie opcje - Proste adresy' oraz Użyj Apache mod_rewrite / Zastosuj przepisywanie URL i Zapisz.

Następnie w IIS URL Rewrite dodaj poniższą regułę:

Pattern field: ^([^/]+)/?$
Ignore case ON
Action type: Rewrite
Rewrite URL: index.php/

web.config

Plik został przetestowany na Joomla 1.5 z IIS 7 w systemie Windows Server 2008 bez żadnych problemów do tej pory. Aby uzyskać więcej informacji na temat konwersji. htaccess do pliku web.config, sprawdź http://learn.iis.net/page.aspx/557/translate-htaccess-content-to-iis-webconfig/

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Common Exploit Blocking" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" />
                        <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" />
                        <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" />
                        <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" />
                        <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" />
                    </conditions>
                    <action type="Redirect" url="index.php" appendQueryString="false" redirectType="SeeOther" />
                </rule>
                <rule name="Joomla Search Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^/search.php" ignoreCase="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.php?option=com_content&amp;view=article&amp;id=4" />
                </rule>
                <rule name="Joomla Main Rewrite Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="(/[^.]*|\.(php|html?|feed|pdf|raw))$" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/" />
                </rule>
            </rules>
        </rewrite>
        <caching>
            <profiles>
                <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
            </profiles>
        </caching>
    </system.webServer>
</configuration>

Dziękujemy za wkład

» Stefan Wajda [zwiastun],