Permalänk
Medlem

Problem med modrewrite!

Jag lyckas inte få till det med mod_rewrite!

Jag vill ha det så här:
www.o2fx.no-ip.info/blabla ska bli www.o2fx.no-ip.info/index.php?sida=blabla

kan någon hjälpa mig med detta?

Ska jag använda .htaccess eller lägga det i httpd.conf?

Jag vill även att ./sysinfo ska bli ./winsysinfo/index.php
och ./statistics ska bli ./statistics/index.html

Visa signatur

| Tablet: | Samsung Galaxy Tab 2 7.0 | CyanogenMod 10 |
| Laptop: | HP Mini 2140 | Atom N270 1.6 GHz | 2 GB PC5300 | GMA 950 | 64 GB SSD | Xubuntu |
| HTPC: | P4 3.0 GHz | Zotac GF9300-I-E | 3 GB PC6400 | 320 GB HDD | Xubuntu |
| Server: | C2D E6750 2.66 GHz | 4 GB PC5300 | 160 GB + 160 GB + 1 TB HDD| Xubuntu

Permalänk

den första är bättre... varför ändra?

Permalänk
Medlem

Jag vill alltså att när jag skriver ./blabla så ska sidan ./index.php?sida=blabla öppnas!

Mitt första inlägg kanske var otydligt skrivet...

Visa signatur

| Tablet: | Samsung Galaxy Tab 2 7.0 | CyanogenMod 10 |
| Laptop: | HP Mini 2140 | Atom N270 1.6 GHz | 2 GB PC5300 | GMA 950 | 64 GB SSD | Xubuntu |
| HTPC: | P4 3.0 GHz | Zotac GF9300-I-E | 3 GB PC6400 | 320 GB HDD | Xubuntu |
| Server: | C2D E6750 2.66 GHz | 4 GB PC5300 | 160 GB + 160 GB + 1 TB HDD| Xubuntu

Permalänk

.htaccess:

RewriteEngine On RewriteBase / RewriteRule ^(.*)$ /index.php?sida=$1

Dock fungerar ju detta inte. Varför? Tänk efter, hade man låtit alla requests gått till index.php så hade ju även en request till /index.php gått till /index.php?sida=index.php, vilken sedan loopar och fortsätter i all evighet. Hade du försökt komma åt en bild exempelvis, hade ju även den requesten gått till index.php. Därför går det inte helt att göra som du säger. En lösning på problem är att använda ett prefix för requests som ska gå till just en fil.

Exempel (.htaccess):

RewriteEngine On RewriteBase / RewriteRule ^sida/(.*)$ /index.php?sida=$1

Detta hade gjort att alla request som pekade mot /sida/ eller någon under-address (/sida/sida2) går till index.php.

Att göra statiska rewrites är dock väldigt lätt;

RewriteEngine On RewriteBase / RewriteRule ^sysinfo$ /winsysinfo/index.php RewriteRule ^sysinfo/(.*)$ /winsysinfo/(.*)

Som du kanske förstår gör "RewriteRule ^sysinfo$ /winsysinfo/index.php" så att /sysinfo skrivs om till /winsysinfo/index.php, medan "RewriteRule ^sysinfo/(.*)$ /winsysinfo/(.*)" tillåter dig att komma åt filer under winsysinfo-mappen (exempelvis /winsysinfo/mapp/fil med /sysinfo/mapp/fil).

Detta kan göras både i httpd.conf och i htaccess-konfigurationsfiler. Apache-dokumentation rekommdenderar att man gör det genom httpd.conf, eftersom att apache måste leta efter htaccess-konfigurationer varje gång en sida requestas om man använder dessa. Detta är dock inget som tar mycket tid, men det är värt att känna till. Jag har dock inga kunskaper om hur man ställer in rewrites genom httpd.conf, men det lär det stå mer om i dokumentationen för Apache.

Permalänk
Medlem

Tack för hjälpen!

Kan man inte göra så här:

RewriteRule ^([a-z]+)$ /index.php?sida=$1

Finns det några risker med att göra så?

Titta gärna på min hemsida www.o2fx.no-ip.info

Går det på något vis att göra så att när man klickar på en länk i menyn så visas www.o2fx.no-ip.info/bilar istället för www.o2fx.no-ip.info/index.php?sida=bilar ?

EDIT: lyckades lösa den sista frågan genom att skriva om länkarna!

EDIT2: www.o2fx.no-ip.info/sysinfo funkar men inga bilder visas!

Kod för den:
RewriteRule ^sysinfo$ /winsysinfo/index.php

Visa signatur

| Tablet: | Samsung Galaxy Tab 2 7.0 | CyanogenMod 10 |
| Laptop: | HP Mini 2140 | Atom N270 1.6 GHz | 2 GB PC5300 | GMA 950 | 64 GB SSD | Xubuntu |
| HTPC: | P4 3.0 GHz | Zotac GF9300-I-E | 3 GB PC6400 | 320 GB HDD | Xubuntu |
| Server: | C2D E6750 2.66 GHz | 4 GB PC5300 | 160 GB + 160 GB + 1 TB HDD| Xubuntu

Permalänk
Medlem

Man kan ju ändra uttrycket lite för att undvika en loop. Kanske

RewriteEngine On RewriteRule ^([^.?]+)$ /index.php?sida=$1

för att skriva om enbart /nånting-som-inte-innehåller-punkt-eller-frågetecken till index.php?sida=detsamma

Jag tror inte man måste escapea en punkt som är mellan hakparenteser (skriva \. istället för .), men kanske.

Jag sitter på en främmande dator, så jag ids inte testa detta, men det borde fungera.

EDIT: Din [a-z] borde också funka bra. Ett annat alternativ är

RewriteEngine On RewriteRule ^(fiskar|grodor|bananer)$ /index.php?sida=$1

om du har just sektionerna fiskar, grodor respektive bananer.

Permalänk
Medlem

Lyckades lösa det sista problemet genom att sätta [R] i slutet av RewriteRule!

Tack alla för hjälpen!

Visa signatur

| Tablet: | Samsung Galaxy Tab 2 7.0 | CyanogenMod 10 |
| Laptop: | HP Mini 2140 | Atom N270 1.6 GHz | 2 GB PC5300 | GMA 950 | 64 GB SSD | Xubuntu |
| HTPC: | P4 3.0 GHz | Zotac GF9300-I-E | 3 GB PC6400 | 320 GB HDD | Xubuntu |
| Server: | C2D E6750 2.66 GHz | 4 GB PC5300 | 160 GB + 160 GB + 1 TB HDD| Xubuntu

Permalänk
Medlem