Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]mod_rewrite automatyczne tworzenie nowych reguł
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Czy można napisać jakiś kontroler który by w pliku .htaccess dodawał automatycznie reguły dla nowych podstron, a nie trzeba by było ręcznie każdej nowej strony osobno dodawać?


Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Można ale, ja osobiscie uwazam ze lepsze jest zrobienie takiej reguly ktora wszystko (oprocz odwolan do plikow o dozwolonych rozszerzeniach) bedzie przekierowwac do jednego pliku, który zajmie się obsługą URL.
Go to the top of the page
+Quote Post
Lejto
post
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


no to mod_rewrite nie będzie tu konieczne?
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Bedzie do zrobienia wlasnie tej regulki przekierowujacej.
Go to the top of the page
+Quote Post
Lejto
post
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


hmm a jakaś pomoc? bo nie za bardzo rozumiem
Go to the top of the page
+Quote Post
bim2
post
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Tak jak teraz przekeirowujesz cokolwiek, powiedzmy artykuły
article,([0-9]+).html article.php?id=$1

To zrob żeby wszysctko przekierowywało na index.php który odbierze adres, przekonweruje i ustawi odpowiednie zmienne.

Zobacz też moją klasą odpowiedzialną za ta obsługę:
http://hernas.pl/download/entry-b9e3dca913...0719b6ae3a2.htm
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kod
RewriteRule !\.(gif|jpe?g|png|css|js|swf|ico|html?)$ index.php
Go to the top of the page
+Quote Post
Pilsener
post
Post #8





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

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


To może ja wyjaśnię - robienie reguł jest ZŁE, bo:
- nieelastyczne (zmiana struktury serwisu, zmiana serwera pociąga za sobą konieczność zmiany reguł), użytkownik powinien móc dowolnie tworzyć kategorie, podkategorie, dodawać strony, instalować moduły bez konieczności dłubania w .htaccess
- obciąża serwer - jak widzę np. 400 reguł opartych o wyrażenia regularne to mnie szlag trafia

Robisz tak, żeby KAŻDY adres typu:
strona.pl/filmy/filmy_przygodowe/filmy,przygodowe-2.html

Był przepisywany na coś takiego:
strona.pl/index.php?page=/filmy/filmy_przygodowe/filmy,przygodowe-2.html

Po prostu wszystko co jest po strona.pl trafia do jednej zmiennej i tyle.

Niezależnie od wpisanego adresu wszystko trafia do zmiennej $_GET['page'] i pliku index.php, gdzie przy pomocy PHP to obrabiasz (najlepiej użyć klasy/funkcji, która parsuje adres i zwraca gotową tablicę parametrów, na początku index.php includujesz taką klasę/funkcję i tyle).
Go to the top of the page
+Quote Post
Lejto
post
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


ok ale jak funkcje napisać typu takiego co podał bim2 w swoim linku?
mój .htaccess obecnie wygląda tak:
Kod
RewriteEngine On
RewriteRule ^index/$ index.php
RewriteRule ^oferta/$ index.php?page=oferta
RewriteRule ^kontakt/$ index.php?page=kontakt
RewriteRule ^wiadomosci/$ index.php?page=wiadomosci
RewriteRule ^mail/$ index.php?page=mail
RewriteRule ^foto/$ index.php?page=galeria
RewriteRule ^foto/[0-9]/$ index.php?page=galeria&id=$1
RewriteRule ^mail,send/$ index.php?page=mail_send


i switch
  1. <?php
  2. public function select_page_nag($page)
  3.    {
  4.            
  5.        switch($page)
  6.        {
  7.            case '':
  8.            $this->glowna_txt();
  9.            break;
  10.            case 'oferta':
  11.            $this->glowna_txt();
  12.            break;
  13.            case 'kontakt':
  14.            $this->glowna_txt();
  15.            break;
  16.            case 'wiadomosci':
  17.            include("news.php");
  18.            break;
  19.            case 'mail':
  20.            include_once("mail.php");
  21.            break;
  22.            case 'mail_send';
  23.            include("mail.php");
  24.            break;        
  25.            case 'galeria';
  26.            include("galeria.php");
  27.            break;
  28.            case (int)
  29.            include("galeria.php");
  30.            break;
  31.            
  32.        }
  33.        
  34.        return $page;
  35.    }
  36. ?>

i nagłówiki
  1. <?php
  2. if($page == '')
  3.    {      
  4.      $result = $this->set_query('SELECT naglowek from pages where id_strony = 0');    
  5.      echo  $result;
  6.    }
  7.    elseif($page == 'oferta')
  8.    {
  9.      $result = $this->set_query('SELECT naglowek from pages where id_strony = 2');    
  10.      echo  $result;    
  11.    }
  12.    elseif($page == 'kontakt')
  13.    {
  14.      $result = $this->set_query('SELECT naglowek from pages where id_strony = 3');    
  15.      echo  $result;    
  16.    }
  17. ..//[..]..
  18. ?>


Ten post edytował Lejto 7.05.2009, 13:43:29
Go to the top of the page
+Quote Post
bim2
post
Post #10





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


zacznijmy od tego żebyś zaczął używać $_GET i $_POST (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Później wystarczy że weźmiesz moją klasę i dasz
  1. <?php
  2. $aRouting['default'] = array('foto/[id]/', 'page=foto&id=id');
  3. $aRouting['default'] = array('[page]/[params]', 'page=[page]', 'params' => '(.*)',
  4.                                                                 '_params' => array('[name]/[value]/', '[name]=[value]'));
  5. ?>

I wtedy normalnie robisz
http://costam.pl/Oferta/id/12/ lub http://costam.pl/Oferta/
lub http://costam/foto/12/ (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Lejto
post
Post #11





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Cytat
zacznijmy od tego żebyś zaczął używać $_GET i $_POST smile.gif

przecież mam $page w get
Go to the top of the page
+Quote Post
bim2
post
Post #12





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Zamiast
  1. <?php
  2. switch($page)
  3. ?>

daj
  1. <?php
  2. switch($_GET['page'])
  3. ?>
Go to the top of the page
+Quote Post
Lejto
post
Post #13





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


a po co (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
jak mam w index.php $page = $_GET['page'];
Go to the top of the page
+Quote Post
bim2
post
Post #14





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


No nie, no to mów na poczatku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tylko po co tak przepisywac zmienne? Nie lepiej korzystać z GET? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zresztą nieważne, już odpowiedziałem na twoje pytanie odnosnie htaccess
Go to the top of the page
+Quote Post
Lejto
post
Post #15





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


nie nie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) to powiedz co robię jeszcze źle, żeby to miało lepszą funkcjonalność
Go to the top of the page
+Quote Post
bim2
post
Post #16





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Nic, w ogóle mi się koncepcja nie podoba. Za dużo pracuję na swoim FW i się przyzwyczaić nie mogę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Powiedz czy udało ci się pomęczyc z moim routerem, bo nie testowałem na innych zew. aplikacjach, robiłem to pod FW :]
Go to the top of the page
+Quote Post
okitoki
post
Post #17





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

Ostrzeżenie: (20%)
X----


zobacz tutaj w jednej z odpowiedzi dodałem troszkę inne rozwiązanie na mod_rewrite
Go to the top of the page
+Quote Post
Lejto
post
Post #18





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


ok dzięki, patrzałem już wcześniej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
pobawię się z tym
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: 24.09.2025 - 08:43