htaccess fråga

PHPportalen Forum Index » Webbservrar och operativsystem
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
snylften



Medlem i: 4423 dagar

Status: Offline



#740748
Inlägg Skrivet: 2016-05-18 16:44      Ämne: htaccess fråga Citera

I min .htaccess fil har jag lite regler som snyggar till url:en. Tex domänen.com/kvarterskliniken-tanum/11504 är egentligen http://domänen.com/profile.php?id=11504.

Jag vill ha samma sak för grenseguiden.no/search.php?q=sökord
Då vill jag att denna url:en ska funka på samma sätt
http://domänen.com/sok/sökord

Kan du hjälpa mig med det?

Så här ser htaccess filen ut idag, som ni ser har jag börjat att testa lite men får inte bägge att funka samtidigt på ett bra sätt.
Har du nåt tips?


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(\d+)/?$ profile.php?name=$1&id=$2
#RewriteRule ^([^/]+)/(\d+)/?$ search.php?nme=$1&q=$2
</IfModule>
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
metalboy



Medlem i: 5426 dagar
Från: Upplands Väsby
Status: Offline



#740749
Inlägg Skrivet: 2016-05-18 17:17      Ämne: Citera

Något liknande detta kanske?
KOD:
1:
RewriteCond %{REQUEST_FILENAME} !-f
2:
RewriteCond %{REQUEST_FILENAME} !-d
3:
RewriteRule sok/(.*) /search.php?q=$1 [L,QSA]


Observera att RewriteCond bara gäller för den närmast efterföljande RewriteRule, så har du flera RewriteRule behöver du upprepa RewriteCond för alla RewriteRule som du vill att de ska gälla för.
 

_________________
Vad händer om man stör en utvecklare i hans arbete? - Han blir utvecklingsstörd
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
snylften



Medlem i: 4423 dagar

Status: Offline



#740750
Inlägg Skrivet: 2016-05-19 08:28      Ämne: Citera

Det fungerade fint. Men jag har en fundering angående mitt formulär från en annan sida.
KOD:
1:
              <form action="search.php" method="get">
2:
                <div class="input-group input-group-lg">
3:
                  <input type="text" id="inpt" name="q" class="form-control" placeholder="Søk etter leverandører, varer og tjenester" autofocus>
4:
                  <span class="input-group-btn">
5:
                    <button class="btn btn-default" id="sok" type="submit">Søk!</button>
6:
                  </span>
7:
                </div><!-- /input-group -->
8:
             </form>

Vi säger att sökordet är "bilar"
På nästa sida så skriver den ut i URL alltså search.php så ser url:en ut så här domän.se/sok/?q=bilar

Jag vill ju att den ska tvätta bort q= och ta enbart själva sökordet och skriva ut det efter slashet/

Hur går jag till väga?

Här är .htaccess filen.
KOD:
1:
<IfModule mod_rewrite.c>
2:
    RewriteEngine On
3:
    RewriteCond %{REQUEST_FILENAME} !-f
4:
    RewriteCond %{REQUEST_FILENAME} !-d
5:
    RewriteRule ^([^/]+)/(\d+)/?$ profile.php?name=$1&id=$2
6:
    #RewriteRule ^([^/]+)/(\d+)/?$ search.php?nme=$1&q=$2
7:
 
8:
   RewriteCond %{REQUEST_FILENAME} !-f
9:
   RewriteCond %{REQUEST_FILENAME} !-d
10:
   RewriteRule sok/(.*) /search.php?q=$1 [L,QSA]
11:
</IfModule>
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
metalboy



Medlem i: 5426 dagar
Från: Upplands Väsby
Status: Offline



#740751
Inlägg Skrivet: 2016-05-19 08:47      Ämne: Citera

Då får du nog ta till ett JavaScript som fångar upp händelsen submit.

KOD:
1:
<form action="search.php" method="get" id="searchForm">
2:
...

KOD:
1:
<script>
2:
document.getElementById("searchForm").addEventListener("submit", function(e) {
3:
    e.preventDefault();
4:
    location.href = "/sok/" + encodeURI(document.getElementById("inpt").value);
5:
});
6:
</script>
 

_________________
Vad händer om man stör en utvecklare i hans arbete? - Han blir utvecklingsstörd
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
snylften



Medlem i: 4423 dagar

Status: Offline



#740757
Inlägg Skrivet: 2016-05-20 20:23      Ämne: Citera

Kanon. Det funkar perfekt... nästan Smile Javascriptet tvättar bort & tecknet av någon anledning. Jag har även testat att köra utan encodeURI som du kan se i koden. Misstänkte att det var den som tvättade bort & tecknet. Men det gör ingen skillnad när jag tar bort den.

Kan tillägga också att jag fick hjälp av en annan också som tyckte att jag skulle köra RewriteRule på följande sätt. Vilket funkade bra. Men jag vet inte om det kanske kan vara rewriterulen som tvättar bort & tecknet?
KOD:
1:
RewriteRule ^sok/([^/]+)$ search.php?q=$1



KOD:
1:
<script>
2:
    document.getElementById("searchForm").addEventListener("submit", function(e) {
3:
        e.preventDefault();
4:
//        location.href = "sok/" + encodeURI(document.getElementById("inpt").value);
5:
        location.href = "sok/" + document.getElementById("inpt").value;
6:
    });
7:
</script>


Någon som har någon aningn om hur jag kan behålla & tecknet i sökordet?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4629 dagar
Från: Tavesta
Status: Offline



#740759
Inlägg Skrivet: 2016-05-20 21:45      Ämne: Citera

Du bör nog använda encodeURIComponent() i det här fallet. Den uri-kodar dina &-tecken.
&-tecken som hamnar i query-strängen blir inge bra.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
snylften



Medlem i: 4423 dagar

Status: Offline



#740760
Inlägg Skrivet: 2016-05-21 08:06      Ämne: Citera

ok, jag har ändrat tillbaka nu.

Men det verkar som att min rewriterule tar bort & tecknet.

Om jag surfar till domän.se/search.php?q=b&b och sedan skriver ut $_GET['q'] så får jag tillbaka exakt b&b.

Om jag sedan surfar till domän.se/sok/b&b och sedan skriver ut $_GET['q'] så får jag tillbaka exakt b

Rewrite rulen ser ut så här
RewriteRule ^sok/([^/]+)$ search.php?q=$1

Jag förstår vad som gör skillnaden men det måste ha att göra med rewrite rullen väl?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4629 dagar
Från: Tavesta
Status: Offline



#740761
Inlägg Skrivet: 2016-05-21 10:57      Ämne: Citera

Nej, du skulle inte ändra tillbaka till encodeURI(), för den kodar inte om &-tecknet. Däremot gör encodeURIComponent() det.

snylften skrev:
Om jag surfar till domän.se/search.php?q=b&b och sedan skriver ut $_GET['q'] så får jag tillbaka exakt b&b.

I en normal konfiguration borde du inte få det resultatet. Då borde $_GET['q'] innehålla 'b' och $_GET['b'] innehålla en tom sträng.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Webbservrar och operativsystem
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic