WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Apache rewrite so ignorerar allt efter /whatever/ (https://www.wn.se/forum/showthread.php?t=1057510)

JesperA 2013-04-09 21:49

Apache rewrite so ignorerar allt efter /whatever/
 
Tjenare!

Finns det någon möjlighet att få Apache att endast läsa "ursprungs"filen i en sökväg, tex om sökvägen är /profile/jespera går det då få Apache att bara läsa /profile/ som pekas som brukligt mot /profile.php och ignorera "jespera" biten i sökvägen?

I Nginx räcker det med:

Kod:

location / {
    try_files $uri $uri/ index.php;
    rewrite ^(.+)/ $1.php;
}

Men Apache envisas med att köra "jespera" snutten också, vilket resulterar i att den inte ens hittar /profile.php, och i detta fallet skall den INTE pekas mot en query string.

(Nej, detta är av någon anledning inte uppbyggt som ett traditionellt MVC och utgår INTE alltid från /index.php)

Någon som har något förslag?

bredbandsbloggen.se 2013-04-11 09:35

Citat:

Ursprungligen postat av JesperA (Inlägg 20467024)
Tjenare!

Finns det någon möjlighet att få Apache att endast läsa "ursprungs"filen i en sökväg, tex om sökvägen är /profile/jespera går det då få Apache att bara läsa /profile/ som pekas som brukligt mot /profile.php och ignorera "jespera" biten i sökvägen?

I Nginx räcker det med:

Kod:

location / {
    try_files $uri $uri/ index.php;
    rewrite ^(.+)/ $1.php;
}

Men Apache envisas med att köra "jespera" snutten också, vilket resulterar i att den inte ens hittar /profile.php, och i detta fallet skall den INTE pekas mot en query string.

(Nej, detta är av någon anledning inte uppbyggt som ett traditionellt MVC och utgår INTE alltid från /index.php)

Någon som har något förslag?

Vad jag förstår av ditt inlägge vill du att /profile/jespera skall öppna
/profile.php istället. Gissar även du menar att första filen heter /profile/jespera.php
Om det är så är det bara att köra en Redirect typ:
Redirect /profile/jespera.php http://www.dindomän.se/profile.php
Kom ihåg att lägga ut hela adressen till vart du skall hamna. Annars får du dessa problem. I alla fall på en "normal" apche server.

nosnaj 2013-04-11 10:00

Jag förstår inte heller helt hur du vill ha omskrivningen.
Hur vill du ta emot jespera på sidan?

Att skriva om så att /profile/jespera anropar /profile.php är ju inga problem med htaccess och mod_rewrite. Har du kikat på den tekniken?

FredrikMH 2013-04-11 12:14

Jag antar att det är mod_rewrite han arbetar med och i så fall borde något i stil med detta fungera:
Kod:

RewriteEngine on
RewriteRule /profile/.* /profile.php [L]


JesperA 2013-04-12 03:14

Citat:

Ursprungligen postat av bredbandsbloggen.se (Inlägg 20467171)
Vad jag förstår av ditt inlägge vill du att /profile/jespera skall öppna /profile.php istället.

Japp, oavsett vad jag skiver efter /profile/ så skall den ALLTID peka mot /profile.php


Citat:

Ursprungligen postat av bredbandsbloggen.se (Inlägg 20467171)
Gissar även du menar att första filen heter /profile/jespera.php

Nej, som ovån, /profile/jespera skall alltid använda /profile.php och /profile/jespera var ju bara ett exempel, som sagt, oavsett vad jag skriver efter /profile/ skall den alltid använda /profile.php


Citat:

Ursprungligen postat av nosnaj (Inlägg 20467173)
Jag förstår inte heller helt hur du vill ha omskrivningen.
Hur vill du ta emot jespera på sidan?

jespera tas emot med php $_SERVER['REQUEST_URI']

Citat:

Ursprungligen postat av nosnaj (Inlägg 20467173)
Att skriva om så att /profile/jespera anropar /profile.php är ju inga problem med htaccess och mod_rewrite. Har du kikat på den tekniken?

Japp det står i topic





Citat:

Ursprungligen postat av FredrikMH (Inlägg 20467187)
Jag antar att det är mod_rewrite han arbetar med och i så fall borde något i stil med detta fungera:
Kod:

RewriteEngine on
RewriteRule /profile/.* /profile.php [L]


Tyvärr, den koden fungerar inte.

Min nuvarande är:

Kod:

<IfModule mod_rewrite.c>
                Options +FollowSymLinks
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteCond %{REQUEST_FILENAME}\.php -f
                RewriteRule ^(.*)/$ /$1.php
</IfModule>

Typ så det brukar se ut, detta gör ju att /profile/ åtminstonde fungerar och använder /profile.php men såfort jag skriver något efter /profile/ så hittar den ingen fil alls att använda, antar att den då letar upp en mapp för /profile/ istället för att köra /profile.php

crazzy 2013-04-12 11:30

På de flesta webbhotell behöver du även definiera RewriteBase, så om du använder dig av ett webbhotell så behöver du troligtvis lägga till denna raden efter RewriteEngine On:

Kod:

RewriteBase /


Alla tider är GMT +2. Klockan är nu 17:52.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson