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]

Certyfikat dla Apache2

Kofiguracja certyfikatu dla Apache 2.2.x 1. Pobieramy źródła:

linux# wget http://ftp.tpnet.pl/vol/d1/apache/httpd/httpd-2.2.15.tar.gz

2. Rozpakowanie źródeł:

linux# tar zxvf httpd-2.2.15.tar.gz

3. Kompilacja i instalacja:

linux# cd httpd-2.2.15/
linux# ./configure –enable-ssl –prefix=/usr/local/apache-2.2.15
linux# make
linux# make install

4. Po zainstalowaniu przechodzimy do konfiguracji:

linux# vi /usr/local/apache-2.2.15/conf/httpd.conf

5. Odhashowujemy linię: Include conf/extra/httpd-ssl.conf To spowoduje, że do konfiguracji Apache zostanie dołączona obsługa SSL’a, teraz możemy przygotować niezbędne pliki:

linux# mkdir /usr/local/apache-2.2.15/ssl/ # stwórzmy katalog SSL, w którym umieścimy plik certyfikatu oraz klucz
linux# cp www.varlog.pl.dec.key /usr/local/apache-2.2.15/ssl/ # kopiowanie klucza
linux# cp www.varlog.pl.crt /usr/local/apache-2.2.15/ssl/ # kopiowanie certyfikatu
linux# cp ca-certum.crt /usr/local/apache-2.2.15/ssl/ # kopiowanie certyfikatów naszego CA

6. Uzupełniamy dane:

linux# vi /usr/local/apache-2.2.15/conf/extra/httpd-ssl.conf
SSLCertificateFile „/usr/local/apache2/ssl/www.varlog.pl.crt”
SSLCertificateKeyFile „/usr/local/apache2/ssl/www.varlog.pl.dec.key”
SSLCACertificateKeyFile „/usr/local/apache2/ssl/ca-certum.crt”

7. Restart Apache’a.

linux# sudo /usr/local/apache2/bin/apachectl restart

Jest to minimalna konfiguracja SSL’a. Więcej informacji można znaleźć na http://httpd.apache.org/docs/2.0/mod/mod_ssl.html.

Apache

AllowOverride None | All
AllowOverride is valid only in sections specified without regular expressions, not in , or sections.
None – .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the filesystem.
All – any directive which has the .htaccess Context is allowed in .htaccess files.