Mod rewrite

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

SAMMANFATTNING:

Mod_rewrite-modulen använder en regelbaserad omskrivningsmotor, baserad på en PCRE regular-expression parser, för att skriva om begärda URL:er i farten. Som standard mappar mod_rewrite en URL till en filsystemsökväg. Den kan dock också användas för att omdirigera en URL till en annan URL, eller för att anropa en intern proxyhämtning.

mod_rewrite ger ett flexibelt och kraftfullt sätt att manipulera webbadresser med ett obegränsat antal regler. Varje regel kan ha ett obegränsat antal bifogade regelvillkor, så att du kan skriva om URL baserat på servervariabler, miljövariabler, HTTP-rubriker eller tidsstämplar.

mod_rewrite fungerar på den fullständiga URL-sökvägen, inklusive sektionen med sökvägsinformation. En omskrivningsregel kan anropas i httpd.conf eller i .htaccess. Sökvägen som genereras av en omskrivningsregel kan inkludera en frågesträng, eller kan leda till intern underbearbetning, omdirigering av extern begäran eller intern proxygenomströmning.


EXEMPEL:

Du har en hemsida som hetter exempel.linux.se , istället för att ha URL som blir https://exempel.linux.se?x=3&y=3 så vill du har länkar som ser ut som https://exempel.linux.se/visa/debian

För du uppnå måste du slå på mod_rewrite det gör du genom att skriva

root@testmakin:/# a2enmod rewrite

Notera att t.ex Ubuntu 22.04 LTS har denna påslagen som standard.

I det bibliotek som du skall mod_rewrite funktionen behöver du lägga följande .htaccess fil :

.htaccess

<IfModule mod_rewrite.c>
 RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>


Exempel .htaccess

Om man vill ta detta skall fungera i ett underbibliotek som heter test så bör man skriva så här istället.

Så skall man ovanstående rader till

RewriteBase /test/
RewriteRule . index.php [L]

Modifera apache2.conf

Du behöver modifera filen apache2.conf , den ligger på ubuntu 22.04 vid /etc/apache2

redigera filen med favorit editor, t.ex pico

Redigera följande stycke i felen

<Directory />
Options Indexes FollowSymLinks MultiViews

            AllowOverride all
Require all granted
allow from all

</Directory>


Spara filen

Skriv sedan

root@testmaskin:/etc/apache2# service apache2 restart


Går nu till det bibliotek där du har din hemsida och där du spara filen .htaccess

Testa om det fungera

Skapa index.php fil med följande innehåll :

<?php print $_SERVER['REQUEST_URI']; ?>

Du skall nu kunna surfa till http://exempel.linux.se/dkdkdkdk

Om allt är rätt gjort, så skall du se den sträng du skriven efter domänen i URL:en.