Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> htaccess i mod rewrite, głupi problem z adresami
little_MASTER
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 8.12.2008

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


witam wszystkich forumowiczów!

Zacznę prosto z mostu. Otóż mam problem z plikiem .htaccess.
Chciałbym zrobić ładne adresy dla strony.

Chodzi o obsługę 3 plików php, a dokładniej index.php , download.php , news.php

na razie wpisuje tak:
Cytat
www.przykladowastrona.pl/index.php -> wchodzę na stronę główną
www.przykladowastrona.pl/index.php?name=o_nas -> wchodzę na stronę która ma identyfikator o_nas (pobierana z bazy)
www.przykladowastrona.pl/index.php?name=o_nas&sub=autor -> wchodzę na stronę która ma identyfikator autor (jest to podstrona strony o_nas)
www.przykladowastrona.pl/index.php?name=o_nas&sub=autor&part=bio -> wchodzę na stronę która ma identyfikator bio (jest to podstrona strony o_nas/autor)
www.przykladowastrona.pl/download.php?id=12 -> pobiera plik o id=12
www.przykladowastrona.pl/news.php?id=113 -> wyświetla news o id=113


dlatego takie linki, ponieważ chcę w menu zaznaczać strony na których się znajduje.

a chciałbym żeby linki wyglądały tak:
Cytat
www.przykladowastrona.pl/
www.przykladowastrona.pl/strony/o_nas.html (ew. www.przykladowastrona.pl/strony/o_nas/ nie wiem którą formę lepiej używać)
www.przykladowastrona.pl/strony/o_nas/autor.html
www.przykladowastrona.pl/strony/o_nas/autor/bio.html
www.przykladowastrona.pl/download/12 (opcjonalnie ukośnik na końcu)
www.przykladowastrona.pl/news/113 (opcjonalnie ukośnik na końcu)


Próbowałem coś samemu wymyślić, poczytałem troszkę o mod rewrite i wymodziłem coś takiego:

Kod
Options +FollowSymLinks
DirectoryIndex index.php

  RewriteEngine On
  RewriteBase /
  #dwie poniższe linie sprawdzają czy przypadkiem taki plik lub folder istnieje
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  #tego niżej nie jestem pewien i co do końca robi (powinno robić :P)
  #RewriteRule ^index\.php ./ [R=301,L]

  #dla pliku strony.php działa i mogę dawać adres tak: www.przykladowastrona.pl/strony/o_nas/
  RewriteRule ^strony/([a-z0-9_]+)/?$ strony.php?name=$1 [L]
  #news działa podobnie
  RewriteRule ^news/([a-z0-9_]+)/?$ news.php?id=$1 [L]
  #RewriteRule ^(.*)$ index.php?kto=$1 [L,QSA]


Nie do końca rozumiem o co chodzi z tymi znacznikami L, QSA sadsmiley02.gif

I nie wiem jak zrobić warunki z tymi name, sub, part i żeby przekierowania szły do pliku index.php plus żeby wszystkie złe adresy szły do pliku 404.php

Czy może lepiej zrobić żeby wszystko szło do pliku index.php i on robił sobie przekierowania wedle potrzeby.

Doradźcie snitch.gif


Na razie wykleiłem coś takiego:
Kod
Options +FollowSymLinks
DirectoryIndex index.php

  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  
  RewriteRule ^strony/([a-z0-9_]+)/([a-z0-9_]+)/([a-z0-9_]+)/?$ index.php?name=$1&sub=$2&part=$3 [L]
  RewriteRule ^strony/([a-z0-9_]+)/([a-z0-9_]+)/?$ index.php?name=$1&sub=$2 [L]
  RewriteRule ^strony/([a-z0-9_]+)/?$ index.php?name=$1 [L]
  
  RewriteRule ^news/([0-9]+)/?$ news.php?id=$1 [L]
  
  RewriteRule ^download/([0-9]+)/?$ download.php?id=$1 [L]
  
  #RewriteRule ^(.*)$ 404.php?id=$1 [L,QSA]


Nie mam pomysłu jak zrobić przekierowanie na 404 jeśli adres będzie niepoprawny, np:

www.przykladowastrona.pl/niedziala/12 bo nie ma słowa kluczowego 'niedziala'
www.przykladowastrona.pl/news/12ef bo news może składać się tylko z cyfr

chciałbym żeby przekierowanie było na stronę 404.php?strona= i tu adres wpisany przez użytkownika

Ten post edytował little_MASTER 27.04.2010, 23:33:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
krzysztof_kf
post
Post #2





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Cytat(little_MASTER @ 27.04.2010, 23:02:37 ) *
Nie mam pomysłu jak zrobić przekierowanie na 404 jeśli adres będzie niepoprawny, np:

www.przykladowastrona.pl/niedziala/12 bo nie ma słowa kluczowego 'niedziala'
www.przykladowastrona.pl/news/12ef bo news może składać się tylko z cyfr

chciałbym żeby przekierowanie było na stronę 404.php?strona= i tu adres wpisany przez użytkownika



  1. ErrorDocument 400 <a href="http://twoja_domena.pl/bad/400.shtml" target="_blank">http://twoja_domena.pl/bad/400.shtml</a>
  2. ErrorDocument 401 <a href="http://twoja_domena.pl/bad/401.shtml" target="_blank">http://twoja_domena.pl/bad/401.shtml</a>
  3. ErrorDocument 403 <a href="http://twoja_domena.pl/bad/403.shtml" target="_blank">http://twoja_domena.pl/bad/403.shtml</a>
  4. ErrorDocument 404 <a href="http://twoja_domena.pl/bad/404.shtml" target="_blank">http://twoja_domena.pl/bad/404.shtml</a>
  5. ErrorDocument 405 <a href="http://twoja_domena.pl/bad/405.shtml" target="_blank">http://twoja_domena.pl/bad/405.shtml</a>
  6. ErrorDocument 406 <a href="http://twoja_domena.pl/bad/406.shtml" target="_blank">http://twoja_domena.pl/bad/406.shtml</a>
  7. ErrorDocument 408 <a href="http://twoja_domena.pl/bad/408.shtml" target="_blank">http://twoja_domena.pl/bad/408.shtml</a>
  8. ErrorDocument 410 <a href="http://twoja_domena.pl/bad/410.shtml" target="_blank">http://twoja_domena.pl/bad/410.shtml</a>
  9. ErrorDocument 411 <a href="http://twoja_domena.pl/bad/411.shtml" target="_blank">http://twoja_domena.pl/bad/411.shtml</a>
  10. ErrorDocument 414 <a href="http://twoja_domena.pl/bad/414.shtml" target="_blank">http://twoja_domena.pl/bad/414.shtml</a>
  11. ErrorDocument 500 <a href="http://twoja_domena.pl/bad/500.shtml" target="_blank">http://twoja_domena.pl/bad/500.shtml</a>
  12. ErrorDocument 503 <a href="http://twoja_domena.pl/bad/503.shtml" target="_blank">http://twoja_domena.pl/bad/503.shtml</a>
Go to the top of the page
+Quote Post
little_MASTER
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 8.12.2008

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


O ErrorDocument 404 czytałem, tylko chciałbym w nim wyświetlić komunikat:

Strona o adresie: "tu błędny adres strony który wpisał użytkownik" nie istnieje.

Dlatego chyba wygodniej byłoby napisać regułę która przekierowuje na 404.php jeśli wszystkie inne nie będą spełnione.

Ew zostawię to ErrorDocument snitch.gif
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #4





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Albo tak

  1. ErrorDocument 400 /400.php
  2. ErrorDocument 401 /401.php
  3. ErrorDocument 403 /403.php
  4. ErrorDocument 404 /404.php
  5. ErrorDocument 500 /500.php
  6. ErrorDocument 503 /503.php
Go to the top of the page
+Quote Post
little_MASTER
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 8.12.2008

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


niestety jeśli dam:
Kod
ErrorDocument 404 /404.php

to nie działa, muszę dać pełen adres:
Kod
ErrorDocument 404 http://www.przykladowastrona.pl/404.php

Dzięki za pomoc, na razie wystarczy mi taki htaccess.

Chyba że jakieś uwagi co do optymalizacji, to poproszę z chęcią smile.gif

P.S.

A jak dopisać do moich reguł przekierowanie które zamieni adres:
Kod
http://www.przykladowastrona.pl/index.php?name=domowa

na
Kod
http://www.przykladowastrona.pl/strony/domowa/

Tak żebym przeglądarka sama zmieniała adres na poprawny i
Kod
http://www.przykladowastrona.pl/strony/domowa

na
Kod
http://www.przykladowastrona.pl/strony/domowa/

Żeby na końcu adresu sam dopisywał się ukośnik

Wiem ze daje się flagę R lub R=301 ale jak to wszystko skleić w całość...

Ten post edytował little_MASTER 28.04.2010, 20:39:17
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #6





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


może to ci pomoże masz tam szczegółowy opis Link
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 Aktualny czas: 19.08.2025 - 05:39