Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> przyjazne adresy, htaccess
yaro84
post 17.11.2016, 08:42:41
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 13.06.2016

Ostrzeżenie: (0%)
-----


Witam

Stworzyłem i nadal tworzę prostą stronę internetową, przy której chciałbym wykorzystać plik htaccess do przyjaznych adresów. Nie działa mi jednak przepisanie. Czy mógłby mi ktoś podpowiedzieć gdzie jest błąd. Wszytko odbywa się póki co na serwerze lokalnym xampp.

Adres wyświetlający się w przeglądarce to:

znajdz-produkt?produkt=nazwaproduktu


Chciałbym żeby ten adres wyglądał tak:

znajdz-produkt/produkt/nazwaproduktu



Kod w pliku htaccess jest następujący:

### PROTECT FILES ###
<FilesMatch "\.(htaccess|htpasswd|ini|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Options FollowSymLinks
RewriteEngine On
Options -Indexes
DirectoryIndex index.php
RewriteRule znajdz-produkt znajdz.php
RewriteRule ^index.html$ index.php
RewriteRule ^znajdz-produkt/produkt/([^-]*)$ znajdz-produkt?produkt=$1 [L]



Prośba o podpowiedź.
Go to the top of the page
+Quote Post
kayman
post 17.11.2016, 18:58:31
Post #2





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


poczytaj o routingu bo imo w ogóle źle się do tego zabierasz a przykładów jest milion

po krótce index.php->routing(skrypt/klasa/funkcja rozpoznająca parametry z url i dobierająca kod do wykonania)->wykonanie

i przykład RewriteRule ^znajdz-produkt/([A-Za-z0-9-]+)$ index.php?action=findProduct&produkt=$1 [L]

gdzie

action -> skrypt wykonujący w tym wypadku findProduct
produkt -> to czego szukamy

Ten post edytował kayman 17.11.2016, 19:09:57
Go to the top of the page
+Quote Post
trueblue
post 17.11.2016, 19:13:13
Post #3





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A czy adresy na Twojej stronie (w kodzie html) wyglądają tak: znajdz-produkt/produkt/nazwaproduktu czy tak: znajdz-produkt?produkt=nazwaproduktu?


--------------------
Go to the top of the page
+Quote Post
Pilsener
post 18.11.2016, 08:55:12
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
chciałbym wykorzystać plik htaccess do przyjaznych adresów
- zły pomysł, bo:
- każda zmiana adresu to zmiana .htaccess
- trudność w debugowaniu (gdy coś nie działa)
Uzupełnię to co napisał kayman:
1. Aplikacja ma jeden punkt wejścia (zazwyczaj public/index.php) gdzie trafiają wszystkie adresy typu .pl/cos-tam-ktos,23.html, .htaccess jedynie przekierowuje wszystkie URLe na ten punkt.
2. Adresy są kodowane i dekodowane przez coś, co się nazywa Router, zasady sobie określasz sam, np. moduł/kontroler/akcja albo /nazwa/parametr

Reasumując: URLe piszesz w PHP a nie .htaccess.
Go to the top of the page
+Quote Post
yaro84
post 18.11.2016, 09:15:59
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 13.06.2016

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 17.11.2016, 20:13:13 ) *
A czy adresy na Twojej stronie (w kodzie html) wyglądają tak: znajdz-produkt/produkt/nazwaproduktu czy tak: znajdz-produkt?produkt=nazwaproduktu?


Adres wygląda: znajdz-produkt?produkt=nazwaproduktu
Nie wiem za bardzo jak zamienić go na tą pierwszą postać...
Go to the top of the page
+Quote Post
trueblue
post 18.11.2016, 09:24:22
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Po prostu zmień.
Przyjazne linki działają w ten sposób, że w kodzie mają być umieszczone właśnie w takiej postaci, a zadaniem .htaccess czy routera jest ich "obróbka".


--------------------
Go to the top of the page
+Quote Post
yaro84
post 18.11.2016, 11:17:20
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 13.06.2016

Ostrzeżenie: (0%)
-----


W pliku index.php mam taki odnośnik do pliku znajdz.php. Po kliknięciu w nazwę produktu w index.php następuje przekierowanie do do pliku znajdz.php z nazwą produktu. Tylko postać linku chciałbym zmienić...

  1. <a href="znajdz-produkt?produkt=nazwaproduktu"> nazwa produktu </a>


W pliku htaccess mam
RewriteRule znajdz-produkt znajdz.php


Go to the top of the page
+Quote Post
trueblue
post 18.11.2016, 12:22:22
Post #8





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jeszcze raz napiszę, to zmień ten link.


--------------------
Go to the top of the page
+Quote Post
yaro84
post 21.11.2016, 10:19:04
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 13.06.2016

Ostrzeżenie: (0%)
-----


Tylko jak zmienię link i chcę przesłać zmienną, to i tak w linku zostanie dopisana "formuła" ....?produkt=nazwaproduktu?

"trueblue" nie podałbyś jakiegoś wzoru, przykładu?

pzdr
Go to the top of the page
+Quote Post
Niree
post 22.11.2016, 16:14:50
Post #10





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

Ostrzeżenie: (0%)
-----


Cytat
Adres wyświetlający się w przeglądarce to:

znajdz-produkt?produkt=nazwaproduktu


Chciałbym żeby ten adres wyglądał tak:

znajdz-produkt/produkt/nazwaproduktu


  1. RewriteRule znajdz-produkt/produkt/(.*) znajdz-produkt?produkt=$1


Próbuj. Też miałem przed chwilą problem z mod_rewrite i to wyżej mi zadziałało. Co istotne, zmień adresy na znajdz-produkt/produkt/blabla a nie zmienne ?produkt=blabla

Ten post edytował Niree 22.11.2016, 16:15:53
Go to the top of the page
+Quote Post
pakolord
post 23.11.2016, 14:42:27
Post #11





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 27.02.2014

Ostrzeżenie: (0%)
-----


jak Ci potrzeba tylko w tym przypadku to proponuje skorzystać z generatora
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 05:45