webForumDet fria alternativet

mod_rewrite om /[namn] är null

8 svar · 768 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Hej,

Jag håller på och sätter upp ett gäng bloggar på en adress.
Varje blog kommer ligga i varsin mapp:

public_html
...blog 1
...blog 2
...blog 3

För att gå in på "rätt" blogg räcker det alltså med att skriva t.ex. http://blog.domain.com/blog1

Nu ska vi även ha en "gemensam" blog som ska heta t.ex. "common" och den kommer man åt via http://blog.domain.com/common.

Nu vill jag fixa så att om [namn] saknas i adressen, ska man automatiskt komma till /common, alltså om man går in på http://blog.domain.com/ ska man landa i http://blog.domain.com/common

Hur löser man det enklast med mod_rewrite?

Tack!

colioneMedlem sedan juni 20014 421 inlägg
#2

Kolla på RewriteCond, %{REQUEST_FILENAME} tillsammand med -d och -f

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Hmm okej, kan jag få lite mer exempelkod? Har inte så bra koll på det här.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#4

Nu har jag kollat lite mer i Apachereferensen:

# '-d' (is directory)
Treats the TestString as a pathname and tests whether or not it exists, and is a directory.

# '-f' (is regular file)
Treats the TestString as a pathname and tests whether or not it exists, and is a regular file.

Det som ska ske är alltså att på något sätt kolla om vald directory finns, annars ska man komma till /common.

Men hur gör jag en ifsats eller liknande?

colioneMedlem sedan juni 20014 421 inlägg
#5

RewriteCond är ifsatsen, rewriterule är vad som utförs. :)

Typn (otestad):

RewritEngine On
RewriteCond %{REQUEST_FILENAME} ! -d
RewriteCond %{REQUEST_FILENAME} ! -f
RewriteRule .* /common [R=permanent,L]
MickeA.comMedlem sedan feb. 20034 441 inlägg
#6

Får INTERNAL ERROR nu..
I Apache dok. står det att syntaxen ska vara:

	 RewriteCond TestString CondPattern

Några tips?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

MickeA.com skrev:

Får INTERNAL ERROR nu..

Aha! Såg precis att det står RewritEngine och inte RewriteEngine i ditt exempel ovan, som jag bara copy/paste'ade.

Det funkar nu, men fick även flytta ihop ! och -d/-f. Det här funkar klockrent:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /start [R=permanent,L]
MickeA.comMedlem sedan feb. 20034 441 inlägg
#8

Nu vill jag modifiera koden ovan något.
Det är så att jag vill att man på två ställen ska kunna visa sidan /path/to/page.php genom att mata in /path/to/page, alltså "namnet" fast utan .php ändelsen.

Hur kan jag lägga till dessa två undantag?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#9

Nu har jag ett litet problem här...
Har aktiverat AwStats på domänen som har sökvägen:

http://blog.domain.com/AwStats

Problemet är att den mappen har en egen .htaccess med login med en .htpasswd och nu blir man redirectad till /start/ eftersom det blir något fel.

Går det att lägga till undantag till "if-satserna" ovan?

135 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)