Mod rewrite: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
(10 mellanliggande sidversioner av samma användare visas inte)
Rad 8: Rad 8:




'''EXEMPEL:'''
== 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 https://exempel.linux.se/visa/debian]   
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 https://exempel.linux.se/visa/debian]   
Rad 20: Rad 20:
I det bibliotek som du skall mod_rewrite funktionen behöver du lägga följande .htaccess fil :
I det bibliotek som du skall mod_rewrite funktionen behöver du lägga följande .htaccess fil :


==== .htaccess ====
=== .htaccess ===
<code><IfModule mod_rewrite.c></code>
<code>
<IfModule mod_rewrite.c><BR>
 RewriteEngine On<BR>
RewriteBase /<BR>
RewriteCond %{REQUEST_FILENAME} !-f<BR>
RewriteCond %{REQUEST_FILENAME} !-d<BR>
RewriteRule . /index.php [L]<BR>
</IfModule><BR>
</code>
<BR><BR>
==== Exempel .htaccess ====


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


<code>   RewriteBase /</code>
Så skall man ovanstående rader till


<code>   RewriteCond %{REQUEST_FILENAME} !-f</code>
<code>
RewriteBase /test/<BR>
RewriteRule . index.php [L]<BR>
</code>


<code>   RewriteCond %{REQUEST_FILENAME} !-d</code>
== Modifera apache2.conf ==
 
<code>   RewriteRule . /index.php [L]</code>
 
<code></IfModule></code>
 
==== apache2.conf ====




Rad 41: Rad 48:


redigera filen med favorit editor, t.ex pico
redigera filen med favorit editor, t.ex pico


Redigera följande stycke i felen  
Redigera följande stycke i felen  


<code><Directory /></code>
<code><Directory /><BR>
 
Options Indexes FollowSymLinks MultiViews<BR>
<code>        Options Indexes FollowSymLinks MultiViews</code>
            AllowOverride all<BR>
 
            Require all granted<BR>
<code>        AllowOverride all</code>
            allow from all<BR>
 
</Directory></code>
<code>        Require all granted</code>
 
<code>        allow from all</code>
 
<code></Directory></code>




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


==== Testa om det fungera ====
== Testa om det fungera ==


Skapa följande index.php fil :
Skapa index.php fil med följande innehåll :
<code><?php
<BR>
<BR>
<code>
<?php
print $_SERVER['REQUEST_URI'];
print $_SERVER['REQUEST_URI'];
?></code>
?></code>

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.