DokuWiki

It's better when it's simple

Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

This translation is older than the original page and might be outdated. See what has changed.
Translations of this page?:

Learn about DokuWiki

Advanced Use

Corporate Use

Our Community


Follow us on Facebook, Twitter and other social networks.

Our Privacy Policy

pl:rewrite

Przepisywanie adresów URL

Domyślnie DokuWiki nie przepisuje adresów URL, co daje URLe w postaci:

http://example.com/doku.php?id=page

Adresy te są uważane za brzydkie i nie są poprawnie indeksowane przez niektóre wyszukiwarki.

Rozwiązaniem jest umożliwienie przepisywania URL, co jest domyślnie wyłączone. DokuWiki obsługuje dwie metody przepisywania URL w zależności od opcji userewrite. Jedna wykorzystuje możliwości przepisania wbudowane w serwer sieciowy, druga obsługę przepisywania adresów URL pozostawia DokuWiki. Poniższa tabela podsumowuje te opcje.

Wartość Info Przykładowy URL
0 Przepisywanie URL jest zablokowane. Wartość domyślna. http://example.com/dokuwiki/doku.php?id=wiki:syntax
1 Przepisywanie obsługiwane przez webserver. http://example.com/dokuwiki/wiki:syntax
2 Przepisywanie wykonywane przez DokuWiki. http://example.com/dokuwiki/doku.php/wiki:syntax

Przepisywanie URL jest domyślnie wyłączone ponieważ wymaga pewnych dodatkowych czynności konfiguracyjnych oprócz ustawienia odpowiedniej pocji konfiguracji - czynności te opisane zostały poniżej.

Nota Bene We wszystkich przykładach dodaj lub zmień linię w pliku conf/local.php na następującą:

$conf['userewrite'] = N;

gdzie N przyjmuje wartość 1 lub 2. (Nie trzeba nic wpisywać, jeśli potrzebna jest opcja 0.)

Opcja 0: edycja kodu php i nazw plików

Tutaj nie chodzi o przepisanie adresu URL, ale sytuacji, gdy trzeba zastąpić „doku.php” z powodu lokalizacji (doku.php nie brzmi tak samo dobrze we wszystkich językach). Wykonałem to na serwerze Apache, ale myślę, że z innymi jest podobnie lub nawet tak samo.

  • Jeśli chcesz: Zmienić nazwę folderu (domyślnie to 'dokuwiki' - na przykład: 'mywiki'). Nie potrzeba zmiany ustawień w DokuWiki.
  • Jeśli chcesz: Zmienić domyślną nazwę pliku 'doku.php' (na przykład: 'start.php')
    1. Zmień nazwę pliku wewnątrz 'index.php' (plik w folderze dokuwiki)
      header("Location: start.php");
    2. Zmień nazwę pliku w 'inc/preload.php' (ścieżka z folderu dokuwiki). Utwórz plik jeśli nie istnieje. inc/preload.php nie jest domyślnie częścią dokuwiki, zatem nie zostanie nadpisany przez aktualizację dokuwiki.
      <?php
      if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','start.php');

I to wszystko!

Jeśli znajdziesz jeszcze jakiś plik php do zmiany, wpisz go tutaj, proszę.

Pozdrowienia
Bronek

Opcja 1: serwer www

Apache

Przepisywanie URLi w Apache wykonywane jest przez moduł mod_rewrite w Apache 1 lub Apache 2. Moduł jest włączany w httpd.conf przez następującą linię (upewnij się, że nie jest wykomentowana):

LoadModule rewrite_module modules/mod_rewrite.so

W wielu odmianach Linux (Ubuntu, Debian, etc) możesz włączyć mod_rewrite przez:

sudo a2enmod rewrite

Konfiguracja modułu mod_rewrite odbywa się za pomocą tzw reguł przepisywania, które mogą być zdefiniowane bezpośrednio w głównym konfigu serwera lub w pliku .htaccess znajdującym się w głównym katalogu DokuWiki. DokuWiki jest dostarczana z plikiem .htaccess.dist, który zawiera niezbędne reguły przepisywania dla trybu 1, ale wykomentowane. Wystarczy skopiować plik do .htaccess (w folderze zawierającym doku.php, zastrzeżenie dla użytkowników Debian1)) i odkomentuj linie by włączyć przepisywanie.

RewriteEngine on
 
RewriteBase /dokuwiki
 
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php

W linii RewriteBase /dokuwiki, powinieneś zastąpić /dokuwiki nazwą folderu używaną przez ciebie w adresie URL by dostać się do wiki. Powiedzmy, że twoim zwykłym (Opcja 0) adresem URL jest http://www.whatever.com/projects/documents/doku.php . Powinieneś ustawić powyższą linię na RewriteBase /projects/documents. Jednak czasami ta linia nie jest w ogóle potrzebna.

Kilka uwag

Pliki .htaccess są uznawane tylko gdy akceptuje je podstawowa konfiguracja Apache. Wiele domyślnych instalacji Apache nie robi tego. By je włączyć, spróbuj dodać co następuje do httpd.conf:

<Directory /path/to/dokuwiki>
   AllowOverride AuthConfig FileInfo Limit
</Directory>

PS: Powyższy zapis spowoduje AllowOverride tylko na tym, co jest potrzebne do działania domyślnej konfiguracji. Jeśli u ciebie to nie działa, spróbuj użyć AllowOverride All

Ewentualnie możesz po prostu określić wyżej wymienione reguły przepisywania bezpośrednio w httpd.conf:

<Directory /path/to/dokuwiki>
  RewriteEngine on
  ... reguły przepisywania tutaj ...
</Directory>

Może być konieczne ponowne uruchomienie Apache, aby zmiany zadziałały.

Niektórzy użytkownicy zgłaszali błąd „403 - Forbidden” po włączeniu wspierania przepisywania. Ustawienie opcji FollowSymLinks wydaje się rozwiązywać problem:

Options +FollowSymlinks
RewriteEngine on
 
...etc.

Reguły przepisywania podane powyżej zmapują wszystkie nieistniejące pliki i katalogi do głównego dyspozytora DokuWiki, co może zostać zastosowane jako wirtualne odwzorowania (aliasy). Niektóre witryny hosta mapują statystyki dostępu do sieci na wirtualny folder /stats . Aby mieć nadal dostęp do tego wirtualnego katalogu, musisz wyłączyć je w warunkach przepisywania. Przykład:

...
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteCond %{REQUEST_URI} !^/stats/(.*)$
...

Jeśli pracujesz bez RewriteBase, być może dlatego, że wynajmujesz u dostawcy dedykowany VirtualHost, musisz dostosować reguły przepisywania.

RewriteRule ^/_media/(.*)  /lib/exe/fetch.php?media=$1  [QSA,L,R]
RewriteRule ^/_detail/(.*) /lib/exe/detail.php?media=$1  [QSA,L,R]
RewriteRule ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^/$ /doku.php [L]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteRule (.*) /doku.php?id=$1  [QSA,L]

Każdy blok RewriteRule musi mieć dołączony wiodący ukośnik, inaczej Apache zwróci kod odpowiedzi 400.

Pożesz potrzebować zmiany Jeśli masz plik robots.txt i/lub sitemap.xml w folderze głównym dokumentów (na bota Google), musisz wyłączyć te pliki z przepisywania w pliku .htaccess:

RewriteCond %{REQUEST_FILENAME}   !robots\.txt
RewriteCond %{REQUEST_FILENAME}   !sitemap\.xml

Jeśli adresy URL ciągle nie są poprawnie przepisywane, dwa razy sprawdź, czy wszystko ustawienie jest faktycznie prawidłowo ustawione. Na stronie ustawień sprawdź, czy opcja „Proste adresy URL” jest ustawiona na „.htaccess”. Albo dokładnie zweryfikuj, czy $conf['userewrite'] jest ustawione na '1' w conf/local.php .

IIS

URL Rewrite Module for IIS 7 (Microsoft's official)

URL Rewrite Module is a Microsoft-supported rewrite module that can be installed on IIS 7 and newer. Starting from version 2.0 it has a wizard that will convert .htaccess rules to its own format (it uses standard IIS configuration mechanism which stores the site-specific settings into a web.config file in the root folder).

How to configure it for DokuWiki:

  1. Make sure you have the .htaccess file configured as described for Apache above
  2. Install URL Rewrite Module 2.0 from Microsoft's website http://www.iis.net/expand/URLRewrite. Make sure you install the version 2.0 - it is a Release Candidate at the time of writing (January 2010).
  3. In IIS Manager, navigate to the site that hosts DokuWiki and double-click „URL Rewrite”
  4. In the right pane („action pane”), find „Import Rules…” and click it
  5. Select the .htaccess file and click Import
  6. It may report an error that a RewriteBase rule is not supported. If you see this error, comment out the line in htaccess rewrite rules and run the import again
  7. If the import succeeded, click Apply in the actions pane
  8. In your DokuWiki configuration, set userewrite to 1 (in the web UI, it will be seen as „.htaccess”)

This procedure worked on my installation where DokuWiki was installed in the website root. I don't know for sure if these steps are enough if DokuWiki is installed in a subfolder (like /sample/documentation) but in principle, URL Rewrite module supports DokuWiki and for my scenario, it was able to convert .htaccess without any problems.

ISAPI Rewrite Lite

IIS doesn't come standard with a rewrite module. I used ISAPI Rewrite Lite (free) successful with these rewrite rules (see the file C:\Program Files\Helicon\ISAPI_Rewrite\httpd.ini):

# Dokuwiki rules
# Fix RSS Feeds
RewriteRule ^(/wiki/)feed.php $1/feed.php [I,L]
RewriteRule ^(/wiki/)feed.php\?(.*) $1/feed.php\?mode=$2&$3 [I,L]
 
RewriteRule ^(/wiki/)_media/(.*)\?(.*) $1lib/exe/fetch.php\?media=$2&$3 [I,L]
RewriteRule ^(/wiki/)_detail/(.*)\?(.*) $1lib/exe/detail.php\?media=$2&$3 [I,L]
RewriteRule ^(/wiki/)_detail/(.*) $1lib/exe/detail.php\?media=$2 [I,L]
RewriteRule ^(/wiki/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 [I,L]
 
RewriteRule (/wiki/) $1doku.php [I,L]
 
RewriteRule ^(/wiki/)\?idx=(.*) $1doku.php\?idx=$2 [I,L]
RewriteRule ^(/wiki/)lib/(.*) $1lib/$2 [I,L]
RewriteRule ^(/wiki/)(.*)\?do=(.*) $1doku.php\?id=$2&do=$3 [I,L]
RewriteRule ^(/wiki/)doku.php\?id=(.*) $1doku.php\?id=$2 [I,L]
RewriteRule ^(/wiki/)(.*) $1doku.php\?id=$2 [I,L]
 
# this rule fixes a problem to see the old revisions
RewriteRule ^(/wiki/)(.*)\?(.*) $1doku.php\?id=$2&$3 [I,L]
 
# Diff still broken unless none is selected under 'use nice URL' options. You can still enter and link to nice URLs but the DokuWiki program will use normal naming.

For all lines with RewriteRule ^(/wiki/), you need to replace the (/wiki/) with whatever directory you use in your URL to get to the wiki. Say that your normal (Option 0) URL is http://www.whatever.com/projects/documents/doku.php . You will need to set the above line to ^(/projects/documents/).

Ionics Isapi Rewrite Filter

It is also possible to use Ionics Isapi Rewrite Filter, which is free and open-source.

IterationLimit 1
 
RewriteRule ^/_media/(.*)             /lib/exe/fetch.php?media=$1   [QSA,L]
RewriteRule ^/_detail/(.*)            /lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^/_export/([^/]+)/(.*)    /doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^/$                       /doku.php                     [QSA,L]
# infinite redirect fix
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule ^/(.*)/$                  /doku.php?id=$1               [QSA,L]
# end fix
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule ^/(.*)                    /doku.php?id=$1               [QSA,L]

Lighttpd

Assuming you have followed instructions for how to set up dokuwiki under lighttpd. If you haven't, define var.dokudir as shown in the example.

# rewrites for dokuwiki
$HTTP["url"] =~ "^" + var.dokudir { index-file.names = ("doku.php") }
    url.rewrite = (
      "^" + var.dokudir + "/lib/.*$"              => "$0",
      "^" + var.dokudir + "/_media/(.*)?\?(.*)$"  => var.dokudir + "/lib/exe/fetch.php?media=$1&$2",
      "^" + var.dokudir + "/_media/(.*)$"         => var.dokudir + "/lib/exe/fetch.php?media=$1",
      "^" + var.dokudir + "/_detail/(.*)?\?(.*)$" => var.dokudir + "/lib/exe/detail.php?media=$1&$2",
      "^" + var.dokudir + "/_detail/(.*)?$"       => var.dokudir + "/lib/exe/detail.php?media=$1",
      "^" + var.dokudir + "/_export/([^/]+)/(.*)\?(.*)$" => var.dokudir + "/doku.php?do=export_$1&id=$2&$3",
      "^" + var.dokudir + "/_export/([^/]+)/(.*)" => var.dokudir + "/doku.php?do=export_$1&id=$2",
      "^" + var.dokudir + "/doku.php.*"           => "$0",
      "^" + var.dokudir + "/feed.php.*"           => "$0",
      "^" + var.dokudir + "/(.*)\?(.*)"           => var.dokudir + "/doku.php?id=$1&$2",
      "^" + var.dokudir + "/(.*)"                 => var.dokudir + "/doku.php?id=$1"
    )

Enable the rewrite module in lighttpd.conf by adding „mod_rewrite” in server.modules. An example config can be seen here.

Nginx

Nginx jest bardzo szybkim i stabilnym httpd, dowiedz się więcej na stronie projektu nginx, oraz na angielskiej wiki. W poniższym przykładzie folder główny serwera to /var/www, a wiki została rozpakowana do /var/www/dokuwiki.

Dla NGINX 0.7.65 lub późniejszych ( źródło konfiguracji )

server {
        server_name wiki.domain.tld;
        root /var/www/dokuwiki;
 
        location / {
                index doku.php;
                try_files $uri $uri/ @dokuwiki;
        }
 
        location @dokuwiki {
                rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
                rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
                rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
                rewrite ^/(.*) /doku.php?id=$1 last;
        }
 
        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/tmp/phpcgi.socket;
        }
}

Dla NGINX 0.6.x lub późniejszych (testowano do wersji 0.7.65)

server {
   listen       80;
   server_name  example.com www.example.com ;
	
   #maximum file upload size is 4MB - change accordingly if needed
   client_max_body_size 4M;
   client_body_buffer_size 128k;
	
	
   root   /var/www/wiki/;
   index  index.html index.php;

   location / {
    if (-f $request_filename) {
      break;
     }

     if (!-f $request_filename) {
        #dokuwiki is installed in the root of the site
        rewrite ^/(.*)?(.*)  /doku.php?id=$1&$2 last;
        rewrite ^/$ /doku.php last;
        break;
     }          
   }

   #dokuwiki is installed in the root of the site
   rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
   rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
   rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;

   location ~ \.php$ {
    fastcgi_pass   phpfcgi;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
   }
}

Dla nginx 0.7.27 lub wyższych (ze wsparciem try_files)

server {
    listen 80;
    server_name example.com www.example.com;

    #maximum file upload size is 4MB - change accordingly if needed
    client_max_body_size 4M;
    client_body_buffer_size 128k;

    root /var/www/wiki;
    index doku.php;

    location / { try_files $uri $uri/ @dokuwiki; }

    location @dokuwiki {
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&$args last;
    }

    location ~ \.php$ {
        if (!-f $request_filename) { return 404; }
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REDIRECT_STATUS 200;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Uwagi

Nginx posiada pełną obsługę fastcgi, prosimy sprawdzić w dokumencie nginx fastcgi by dostosować własną konfigurację.

Dla użycia prtokołu https musi być ustawiona zmienna serwera HTTPS by włączyć właściwe linkowanie dokuwiki. Może to być wykonane w sekcji serwera podobnej do:

server {
  listen 443;
  ...
  location ~ .php$ {
    ...
    include fastcgi_params;
  ## sets $_SERVER['HTTPS']
    fastcgi_param HTTPS on;
  }

Ostatnie słowo kluczowe w regułach przepisywania przed ustawieniem lokalizacji zapewnia, że przepisanie wykona się tylko raz. Powinieneś zastąpić wszystkie /dokuwiki/ występujące powyżej folderu wiki na relatywny do folderu głównego serwera.

Jeśli tylko przekopiowaliście powyższą konfigurację, upewnij się, że dodałeś lokacje by zabezpieczyć foldery, jak to opisano na stronie Bezpieczeństwa.

Opcja 2: DokuWiki

W pliku conf/local.php, dodaj lub zmień linię na następującą:

$conf['userewrite'] = 2;

Opcja ta nie wymaga żadnych zmian ustawień serwera. Niemniej jednak opiera się o funkcję PATH_INFO standardu CGI wprowadzonego przez. Wiadomo, że IIS nie działa z tym ustawieniem2). IIS6 (MS Server 2003) działa poprawnie, gdy basedir jest ustawiona na /.

Używanie Alias directive Apache z tą opcją może prowadzić do ogromnego bólu głowy i uszkodzenia wiki! ⇐ Poprawka, jaką należy zastosować jest dostępna tutaj: https://www.trg-oha.de/~sstrickroth/dokuwiki-alias.patch

Czyszczenie ID sesji PHP

Pomimo użycia „czystych” URLi możesz natrafić na parametr „DokuWiki” w adresie URL wyglądający tak:

PHP session ID:

http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5

Ten parametr to ID sesji PHP i jest dodawany automatycznie przez PHP. Jest on zupełnie nie związany z przepisywaniem adresów. By go wyłączyć,możesz wymusić na PHP używanie zawsze ciasteczek dla sesji ustawiając opcję session.use_only_cookies w PHP.

Często jest to robione w pliku konfiguracyjnym php.ini (gdy używasz usługi hostingu, sprawdź stronę wsparcia firmy hostującej by dowiedzieć się, czy i jak możesz ustawić te wartości):

session.use_only_cookies=1

Jeśli wciżą widać identyfikator sesji, wypróbuj:

session.use_trans_sid=0

Gdy PHP używany jest jako moduł Apache, możesz być w stanie podmienić te wartości przy pomocy pliku .htaccess używając następującej składni:

php_flag session.use_only_cookies on
php_flag session.use_trans_sid off

Jeśli nie możesz wykorzystać żadnego z tych rozwiązań (wiele hostów blokuje edycję php.ini i użycie php_flag w .htaccess), będziesz musiał zmienić plik conf/local.php. Zauważ, że powyższe ustawienia nie mogą być zmienione przy użyciu ini_set() od wersji 4.2.3 PHP, zatem jedynm sposobem wykonania tego jest

ini_set('url_rewriter.tags', '');
Miałem problem z błędnym ustawieniem mojego session.cookie_domain (wykrzystuję wirtualny hosting i nazwa mojej domeny była ustawiona niepoprawnie). Dodałem
php_value session.cookie_domain www.my.domain.com

do odpowiedniego virtualhost w moim httpd.conf (chociaż .htaccess powinien również działać), i zanieczyszczone adresy URL zniknęły. Analogicznie, jeśli nie masz dostępu do php.ini ani konfiguracji, powinienes mieć możliwość użycia ini_set('PHP variable', 'value'); by uzyskać ten sam efekt (plik conf/local.php wydaje się być dobrym miejscem do umieszczenia tego, jako że ten plik jest dołączany zanim sesja jest uruchamiana).

W moim przypadku, FastCGI powodował pojawianie się identyfikatorów sesji. Wyłączenie go usunęło je.

Patrz również

Dyskusja

  • I'm using IIRF under IIS6 and the search box always redirected me back to /doku.php. I'm not sure if it's just my config, but the way I fixed it was to add the rule RewriteRule ^/\?(.*) /doku.php?$1 [QSA,L] underneath the _export rule.
  • Please note that it took me a few hours to figure out all by myself that I needed to add
    $conf['userewrite'] = 1;

    in my conf/local.php file. I almost erased my Dokuwiki installation because of those two little missing details. — bstp 2010-11-26

  • Even when using above configuration with Apache, often the URL becomes example.com/doku.php, no matter at what page you are. I could not find a solution to that.
    • It's an implementation issue, not a rewriting problem. — BlackFog 2007-12-19 15:42
  • Option = 2 works with IIS 6 (Windows 2003) and current nightly build if basedir is set. — BlackFog 2007-12-19 15:42
  • For Option = 2, it seems that we need to specify the value of basedir no matter which system we are using (Apache or IIS, etc); even when doku.php is just in the root dir we still need to specify basedir as /Yihui Xie 2008/05/28 20:09
  • For a long time I used DokuWiki (2) rewrite option, and now there are some links like …/wiki/doku.php/… spread through the internet. If now I'll use .htaccess rewrite method (1), which is discussed here, all those old links with doku.php will become invalid. Is it possible to add some rules so that old links were still valid? If yes, please, explain how can it be done.
    • The solution was to add RewriteRule doku.php/(.*) doku.php?id=$1 [QSA,L] right after RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] line.
  • Using rewrite rules for nginx that are presented breaks retrieval of images from dokuwiki. It seems to be not using the default value of root:
    [error] 27613#0: *1 open() "/usr/local/nginx/html/wiki/lib/tpl/arctic/images/button-firefox.png" failed

    My solutions is to add the following to the nginx.conf:

    location /wiki/lib/ {
      root /var/www/path/to/site.../;
    }

    thedimi.net 2009-03-06 00:00

  • With IIS and Helicon Isapi_Rewrite, if DokuWiki is in the root, the code for httpd.ini should be (note the absence of the subdirectory and the fact that there are 2 lines for „_media” and not just 1 as mentioned in the code above):
    # Dokuwiki rules
    # Fix RSS Feeds
    RewriteRule ^(/)feed.php $1/feed.php [I,L]
    RewriteRule ^(/)feed.php\?(.*) $1/feed.php\?mode=$2&$3 [I,L]
     
    RewriteRule ^(/)_media/(.*)\?(.*) $1lib/exe/fetch.php\?media=$2&$3 [I,L]
    RewriteRule ^(/)_media/(.*) $1lib/exe/fetch.php\?media=$2 [I,L]
    RewriteRule ^(/)_detail/(.*)\?(.*) $1lib/exe/detail.php\?media=$2&$3 [I,L]
    RewriteRule ^(/)_detail/(.*) $1lib/exe/detail.php\?media=$2 [I,L]
    RewriteRule ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 [I,L]
     
    RewriteRule (/) $1doku.php [I,L]
     
    RewriteRule ^(/)\?idx=(.*) $1doku.php\?idx=$2 [I,L]
    RewriteRule ^(/)lib/(.*) $1lib/$2 [I,L]
    RewriteRule ^(/)(.*)\?do=(.*) $1doku.php\?id=$2&do=$3 [I,L]
    
     
    # this rule fixes a problem to see the old revisions
    RewriteRule ^(/)(.*)\?(.*) $1doku.php\?id=$2&$3 [I,L]
     
    # Diff still broken unless none is selected under 'use nice URL' options. You can still enter and link to nice URLs but the DokuWiki program will use normal naming.
1)
W Debian ie 6 przynajmniej nie musisz niczego kopiować. /usr/share/dokuwiki/.htaccess jest linkiem do /etc/dokuwiki/.htaccess. Nie ma już zatem żadnego zastrzeżenia.
2)
Patrz Dyskusja
pl/rewrite.txt · ostatnio zmienione: 2014-05-02 21:30 przez 176.108.135.143