Path

Umožňuje uživatelům určit vlastní URL stránek.

  1. V admin/modules (Moduly) povolte modul Path.
  2. V admin/config/search/clean-urls (Konfigurace, Čistá URL) můžete povolit čistá URL.
    • Při problémech s čistými URL nebo pokud vytváříte multisite web:
      • odkomentujte v hlavním adresáři u souboru .htaccess řádek # RewriteBase /. Příklady:
        • jestliže máte Drupal na adrese http://example.com bude řádek obsahovat:
          RewriteBase /
        • jestliže máte Drupal na adrese http://example.com/test/ bude řádek obsahovat:
          RewriteBase /test
      • v souboru /sites/default/settings.php odkomentujte a upravte základní adresu webu (bez lomítka na konci):
        $base_url = 'http://www.example.com';
  3. Nastavení přesměrování URL adresy je možné upravit v souboru .htaccess
    • pro hlavní doménu webu nastavte URL adresu s počátečním www
    • pro případné subdomény webu bez počátečního www
  4. Nainstalujte modul Pathauto.

Příklady

Odstranění "index.php?q=" parametru z URL

Pokud se v odkazu vyskytují čísla, malá, velká písmena nebo pomlčka (některé řídící znaky jako je např. pomlčka je třeba v regulárních výrazech tzv. "escapovat" zpětným lomítkem), předá se systému před tímto výskytem i systémová adresa. Výskyt uzavřený v první kulaté závorce je předáván jako proměnná $1.

Zobrazovaná URL adresa: http://tomas.dankovi.info/testovaci-stranka
Systémová adresa: http://tomas.dankovi.info/index.php?q=testovaci-stranka

RewriteEngine On
RewriteRule ^([0-9a-zA-Z\-]+)$ index.php?q=$1

Přepis subdomény za lomítko domény:

RewriteCond %{HTTP_HOST} ^(.*)tomas\.dankovi\.info
RewriteRule (.*) http://www.dankovi.info/tomas/$1 [L,R=301]
# Redirect "universal"
RewriteCond %{HTTP_HOST} ^(.*)testpokus(.*)\.dankovi\.info
RewriteRule (.*) http://www.dankovi.info/test-pokus-%2/$1 [L,R=301]

Ostranění zdvojeného www.www.:

# Redirect "remove double 'www.www.' from subdomain"
  RewriteCond %{HTTP_HOST} ^www\.www\.dankovi\.info
  RewriteRule (.*) http://www.dankovi.info/$1 [L,R=301]

Porovnání zápisu stejných pravidel u .htaccessmode_rewrite

.htaccess
# Protect files and directories from prying eyes.
<FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

# Set the default handler.
DirectoryIndex index.php

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On
  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600
  # Do not cache dynamically generated pages.
  ExpiresByType text/html A1
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # Site to be accessed WITH the www. only
  RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  RewriteRule .* http://www.example.com/ [L,R=301]

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
mode_rewrite
# Protect files and directories from prying eyes.
<FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

# Set the default handler.
DirectoryIndex index.php

# Requires mod_expires to be enabled.
  # Enable expirations.
  ExpiresActive On
  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600
  # Do not cache dynamically generated pages.
  ExpiresByType text/html A1

# Various rewrite rules.
  RewriteEngine on

  # Site to be accessed WITH the www. only
  RewriteCond %{HTTP_HOST} ^example\.com$
  RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
  RewriteRule ^/(.*)$ /index.php?q=$1 [L,QSA]