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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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ą (IMG:style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:47