Co to jest i jak ustawić Mod Rewrite (przyjazne adresy URL)?

Mod rewrite to moduł serwera Apache używany w systemach Unix/Linux. Moduł przekształca skomplikowane linki (adresy URL) do postaci bardziej czytelnej dla użytkownika i wyszukiwarek internetowych. Przy pomocy Mod Rewrite możemy również przekierować kilka domen, subdomen na jedną domenę główną.

Użycie:
– w pliku .htaccess
– w pliku index.php
– w pliku vhosta (przykład 4)

Przykład 1
Przekierowanie domeny nazwa.pl na subdomenę www.nazwa.pl
[sourcecode language=”bash”]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^nazwa.pl
RewriteRule (.*) http://www.nazwa.pl [R=301,L]
[/sourcecode]

Przykład 2
Przekierowanie wszystkich subdomen *.nazwa.pl na domenę główną nazwa.pl
[sourcecode language=”bash”]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*).nazwa.pl
RewriteRue (.*) http://nazwa.pl [R=301,L]
[/sourcecode]

Przykład 3
Przekierowanie domeny głównej nazwa.pl i wszystkich jej subdomen *.nazwa.pl
[sourcecode language=”bash”]
RewriteEngine On
RewriteCond %{HTTP_HOST} !=nazwa.pl
RewriteRule (.*) http://www.nazwa.pl [R=301,L]
[/sourcecode]

Przykład 4
Przekierowanie domeny głównej nazwa.pl, domeny nazwa.eu, wszystkich subdomen *.nazwa.pl, wszystkich subdomen *.nazwa.eu, z wyjątkiem subdomeny test.nazwa.pl na subdomenę www.nazwa.pl

Wygląd pliku /etc/apache2/site-available/nazwa.pl
[sourcecode language=”bash”]
<VirtualHost *:80>
ServerName www.nazwa.pl
ServerAlias nazwa.pl *.nazwa.pl nazwa.eu *.nazwa.eu

RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.nazwa.pl
RewriteRule (.*) http://www.nazwa.pl [R=301,L]

DocumentRoot /home/user/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /home/www/user/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
[/sourcecode]

Wygląd pliku /etc/apache2/site-available/test.nazwa.pl
[sourcecode language=”bash”]
<VirtualHost *:80>
ServerName test.nazwa.pl
DocumentRoot /home/www/user/public_html/test

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /home/www/user/public_html/test/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
[/sourcecode]