Mod rewrite: Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
Rad 51: | Rad 51: | ||
Redigera följande stycke i felen | Redigera följande stycke i felen | ||
<code><Directory /> | <code><Directory /><BR> | ||
Options Indexes FollowSymLinks MultiViews<BR> | |||
< | |||
AllowOverride all<BR> | AllowOverride all<BR> | ||
Require all granted<BR> | Require all granted<BR> |
Nuvarande version från 9 mars 2023 kl. 10.44
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.