--=REKLAMA=--

Włączanie prostych adresów internetowych

Z Joomla!WikiPL

Wersja Zwiastun (dyskusja | edycje) z dnia 02:16, 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).

Procedura umożliwiająca włączenie prostych adresów różni się w zależności od serwera WWW, którego używasz. Jeśli używasz hostingu współdzielonego, to jest to prawdopodobnie Apache. Jeśli nie jesteś pewien, zapytaj swojego dostawcę usług hostingowych.

Na tej stronie zostały uwzględnione tylko najbardziej popularne serwery. Odwiedź stronę i stronę:, aby zobaczyć więcej artykułów.

Apache

Oto instrukcja krok po kroku. Należy je wykonywać w prezentowanej tutaj kolejności. Jeżeli krok nie przyniesie efektu, nie należy kontynuować do momentu rozwiązania problemu.

  1. Zmień nazwę pliku "htaccess.txt" w głównym katalogu witryny Joomla! na ".htaccess" ( więcej o .htaccess).
  2. Ten krok może być niekonieczny. Otwórz .htaccess w edytorze tekstu. Odkomentuj polecenie RewriteBase / (usuń początkowy znak #). Jeśli Joomla jest zainstalowany w podkatalogu, wprowadź jego nazwę po ukośniku. np. RewriteBase /twojkatalogjoomla.
  3. Zaloguj się na zaplecze i otwórz stronę Konfiguracja globalna.
  4. Włącz opcję Proste adresy i Zapisz. Ta opcja konwertuje adresy URL z rdzennego formatu Joomla! do formatu przyjaznego dla wyszukiwarek #:(SEF).Sprawdź, czy witryna działa poprawnie. Adresy URL powinny wyglądać jak ten http://www.przyklad.com/index.php/nowiny/1-ostatnie-nowiny/1-witaj-u-joomla.
    Jeśli Twoja witryna nie działa poprawnie, zobacz Dlaczego Twoja strona się działa po włączeniu SEF (Search Engine Friendly URL)?
  5. Włącz opcję Użyj mod_rewrite / Zastosuj przepisywanie URL i Zapisz. Ta opcja wykorzystuje funkcję Apache mod_rewrite, aby wyeliminować z adresu część "index.php".
    Sprawdź, czy witryna działa poprawnie. Adresy URL powinny wyglądać jak ten http://www.przyklad.com/nowiny/1-ostatnie-nowiny/1-witaj-u-joomla..
    Jeśli ta opcja powoduje błędy, zobacz Jak sprawdzić, czy na serwerze włączony jest mod rewrite.
    Jeśli nie jest włączony, a masz dostęp do pliku apache/conf/httpd.conf, otwórz ten plik i sprawdź czy linia LoadModule rewrite_module modules/mod_rewrite.so jest odkomentowana. Jeśli to konieczne, usuń znak komentarza i ponownie uruchomić serwer WWW Apache.
    Jeśli mod_rewrite nie może być włączony, pozostaw tę opcję wyłączoną. To nie ma znaczenia, że zostawisz plik .htaccess niezmieniony.
    Jeśli uważasz, że to konieczne, włącz opcję Adresy z przyrostkiem i Zapisz. Ta opcja dodaje na końcu adresów .html. Istnieją różne opinie na temat tego, czy jest to konieczne, a nawet użyteczne. Wyszukiwarek nie obchodzi, czy adresy URL są zakończone przyrostkiem .html.
  6. Otwórz stronę menedżera Dodatki i włącz dodatek System - SEF. Ten dodatek wspiera obsługę prostych adresów w artykułach Joomla. Działa bezpośrednio na HTML i nie wymaga specjalnego znacznika.


IIS 7

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>


Nginx

  • Dodaj poniższy kod do konfiguracji serwera (vhost) w pliku nginx.conf:
        # Support Clean (aka Search Engine Friendly) URLs</tt>
        location / {
                try_files $uri $uri/ /index.php?q=$request_uri;
        }
  1. Zaloguj się na zaplecze i otwórz stronę Konfiguracja globalna.
  2. Włącz opcję Proste adresy i Zapisz. Ta opcja konwertuje adresy URL z rdzennego formatu Joomla! do formatu przyjaznego dla wyszukiwarek #:(SEF).Sprawdź, czy witryna działa poprawnie. Adresy URL powinny wyglądać jak ten http://www.przyklad.com/index.php/nowiny/1-ostatnie-nowiny/1-witaj-u-joomla.
    Jeśli Twoja witryna nie działa poprawnie, zobacz Typowe problemy obsługi prostych adresów?
  3. Włącz opcję Użyj mod_rewrite / Zastosuj przepisywanie URL i Zapisz. Ta opcja wykorzystuje funkcję Apache mod_rewrite, aby wyeliminować z adresu część "index.php".
    Sprawdź, czy witryna działa poprawnie. Adresy URL powinny wyglądać jak ten http://www.przyklad.com/nowiny/1-ostatnie-nowiny/1-witaj-u-joomla..
    Jeśli ta opcja powoduje błędy, zobacz Jak sprawdzić, czy na serwerze włączony jest mod rewrite.
    Jeśli nie jest włączony, a masz dostęp do pliku apache/conf/httpd.conf, otwórz ten plik i sprawdź czy linia LoadModule rewrite_module modules/mod_rewrite.so jest odkomentowana. Jeśli to konieczne, usuń znak komentarza i ponownie uruchom serwer.
    Jeśli mod_rewrite nie może być włączony, pozostaw tę opcję wyłączoną. To nie ma znaczenia, że zostawisz plik .htaccess niezmieniony.
    Jeśli uważasz, że to konieczne, włącz opcję Adresy z przyrostkiem i Zapisz. Ta opcja dodaje na końcu adresów .html. Istnieją różne opinie na temat tego, czy jest to konieczne, a nawet użyteczne. Wyszukiwarek nie obchodzi, czy adresy URL są zakończone przyrostkiem .html.
  4. Otwórz stronę menedżera Dodatki i włącz dodatek System - SEF. Ten dodatek wspiera obsługę prostych adresów w artykułach Joomla. Działa bezpośrednio na HTML i nie wymaga specjalnego znacznika.

Dziękujemy za wkład

» Stefan Wajda [zwiastun],