Przyjazne linki, problem ze stworzeniem takiego linka: ./strona/kultura/b/6

0

Mam taki kod w .htaccess:

RewriteEngine on
DirectoryIndex index.php

RewriteBase /strona/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^index$ index.php [L]

RewriteRule ^Ciekawe-miejsca-([c])-([0-9]+)$ Ciekawe-miejsca.php?strona=$1&id=$2 [L]

RewriteRule ^kultura/([b])/([0-9]+)/?$ kultura.php?strona=biblioteki&b=$2 [L]

 
<a href="/strona/kultura/b/{$c.id}" title=""> </a>
 

I wszystko było by ok, ponieważ sam przyjazny link działa, tylko, że ścieżki do CSSów i grafiki nie widzi :( Nie da się tego jakoś naprawić ? Wygląda to tak jakby serwer zakopał się w nieistniejących katalogach :/

1

Ścieżki do CSSów itd pisz zawsze absolutne, tj: /css/style.css, nie css/style.css. Tada ;)
Ew. możesz użyć elementu <base> http://www.w3schools.com/TAGS/tag_base.asp --- ale mnie on z jakiegoś powodu, którego nie pamiętam nie odpowiadał..

0

Ok, działa :) ale oceńcie: do każdego linka napisałem pełną ścieżkę tzn.:
np

travel to główny katalog:)
link: http://127.0.0.1/travel/kultura/biblioteki

i taki href:/travel/kultura/galeria_handlowa <-- i tak dałem wszędzie :)

czy tak będzie ok, ze względu na opytmalność? czy tego typu ścieżki nie zwiększą czasu przeładowania stron ?

2

Dodatkowe 100 bajtów Cię nie zbawi - zapewne więcej mają wcięcia, znaki nowych linii itd. Nie jest to absolutnie coś, co Cię powinno obchodzić.

0

Mam jeszcze jedno pytanie. Mam klasę do paginacji. Zrobiłem przyjazne linki i mam problem :/ mam taki link www.strona/cos1/cos2 i klasa paginacja dodaje coś takiego:
?page='.

Wszystko było by ok, zmieniam sobie znak zapytania na: / usuwam znak równości ewentualnie słowo page też się nie przyda, ale jak tak robię to automatycznie usuwa mi z linku ostatnie słowo :O Kiii czort :d ?? I link wygląda następująco: www.strona/cos1/2. A powinien wyglądać tak:
www.strona/cos1/cos2/2

0

pokaż jakiś kawałek kodu może?

0

A więc klasa do paginacji:

 
<?
  class pagination
  {
    var $page = 1; // Current Page
    var $perPage = 10; // Items on each page, defaulted to 10
    var $showFirstAndLast = false; // if you would like the first and last page options.
    
    function generate($array, $perPage = 10)
    {
      // Assign the items per page variable
      if (!empty($perPage))
        $this->perPage = $perPage;
      
      // Assign the page variable
      if (!empty($_GET['page'])) {
        $this->page = $_GET['page']; // using the get method
      } else {
        $this->page = 1; // if we don't have a page number then assume we are on the first page
      }
      
      // Take the length of the array
      $this->length = count($array);
      
      // Get the number of pages
      $this->pages = ceil($this->length / $this->perPage);
      
      // Calculate the starting point 
      $this->start  = ceil(($this->page - 1) * $this->perPage);
      
      // Return the part of the array we have requested
      return array_slice($array, $this->start, $this->perPage);
    }
    
    function links()
    {
      // Initiate the links array
      $plinks = array();
      $links = array();
      $slinks = array();
      
      // Concatenate the get variables to add to the page numbering string
      if (count($_GET)) {
        $queryURL = '';
        foreach ($_GET as $key => $value) {
          if ($key != 'page') {
            $queryURL .= '&'.$key.'='.$value;
          }
        }
      }
      
      // If we have more then one pages
      if (($this->pages) > 1)
      {
        // Assign the 'previous page' link into the array if we are not on the first page
        if ($this->page != 1) {
          if ($this->showFirstAndLast) {
            $plinks[] = ' <a href="?page=1'.$queryURL.'">&laquo;&laquo; First </a> ';
          }
          $plinks[] = '<span class="poprzednia"> <a href="?page='.($this->page - 1).$queryURL.'">&laquo; Poprzednia</a></span> ';
        }
        
        // Assign all the page numbers & links to the array
        for ($j = 1; $j < ($this->pages + 1); $j++) {
          if ($this->page == $j) {
            $links[] = ' <span class="selected">'.$j.'</span> '; // If we are on the same page as the current item
          } else {
            $links[] = '<span class="srodkowe"> <a href="?page='.$j.'">'.$j.'</a> </span>'; // add the link to the array
          }
        }
  
        // Assign the 'next page' if we are not on the last page
        if ($this->page < $this->pages) {
          $slinks[] = '<span class="poprzednia"> <a href="?page='.($this->page + 1).$queryURL.'"> Następna &raquo; </a> </span>';
          if ($this->showFirstAndLast) {
            $slinks[] = ' <a href="?page='.($this->pages).$queryURL.'"> Last &raquo;&raquo; </a> ';
          }
        }
        //http://4programmers.net/Forum/PHP/120220-Php_StronicowaniePaginacja_wyswietlanie_ilosci_stron?p=824211#id824211/
		
        // Push the array into a string using any some glue
        return implode(' ', $plinks).implode(/*$this->implodeBy,*/ $links).implode(' ', $slinks);
      }
      return;
    }
  }
?>

problem rodzi się tu np tu:

 
        if ($this->page < $this->pages) {
          $slinks[] = '<span class="poprzednia"> <a href="?page='.($this->page + 1).$queryURL.'"> Następna &raquo; </a> </span>';
          if ($this->showFirstAndLast) {
            $slinks[] = ' <a href="?page='.($this->pages).$queryURL.'"> Last &raquo;&raquo; </a> ';
          }
        }

A dokładniej tu (chodzi o samego hrefa):

  $slinks[] = ' <a href="?page='.($this->pages).$queryURL.'"> Last &raquo;&raquo; </a> ';

On dopisuje do końca linka to: ?page='.($this->pages).$queryURL.

np:
Chcę, żeby wyglądało to tak:

http://127.0.0.1/travel/kultura/galerie/handlowe/page/2  etc ...page/3, ...page/4, ...page/n
 

Obecnie wygląda to tak:

 
http://127.0.0.1/travel/kultura/galerie/handlowe?page=2

Jak zmienię na coś takiego: <a href="/page/'.($this->pages).$queryURL.'"> To wychodzi mi, że ucina ostatnie słowo z linka:/ :

 
http://127.0.0.1/travel/kultura/galerie/page/1

A ma być tak:

 
http://127.0.0.1/travel/kultura/handlowe/galerie/page/1

Czyli nie działa mi :( nie pobiera mi $_GET['page'].

Tu jeszcze .htaccess:

 
RewriteRule ^kultura/([a-z]+)/([a-z]+)/([a-z]+)/([0-9]+)/?$ kultura.php?a=$1&strona=$2&p=$3&page=$4 [L]

Może w przyjaznych linka coś zmienić? Np. końcówkę z:&page=$4 na : ?page=$4
Zaraz będę kombinował, ale za wszelką pomoc udzieloną z waszej strony też liczę, bo ja już się męczę trochę i nie wychodzi :/

0

Albo jak przerobić taki link na przyjazny:

 

http://127.0.0.1/travel/kultura/galerie/handlowe_-?3

Coś takiego mi nie chodzi:

 
RewriteRule ^kultura/([a-z]+)/([a-z_-]+)?([0-9]+)/?$ kultura.php?a=$1&strona=$2&page=$3 [L]

Czyta mi ładnie a=galerie&strona=handlowe_- i 3. już nie wczytuje do page :/
noo normalnie już nie wiem :/

0

Co do poprzedniego posta:

ja się dziwię, że /page/cokolwiek nie kieruje do http://127.0.0.1/page/cokolwiek

Wywal ukośnik z samego początku, spowoduje to dopisanie do aktualnego URL "page/costam", więc powinno być ok (dopóki ktoś nie będzie manipulował przy url)

Co do nowszego posta:

Chyba chodziło Ci o coś takiego:
RewriteRule ^kultura/([a-z]+)/([a-z]+)/([a-z_-]+)\?([0-9]+)$ kultura.php?a=$1&strona=$2&page=$3 [L]

Ale pytajnika to ja bym nie wpisywał do requłek, chyba, że w ogóle nie interesuje Cię "klasyczne" przekazywanie wartości przez GET (ale skoro nie używasz flagi QSA to pewnie nie).

0

Wklej cały .htaccess

0

czytam mi tą regułę:

RewriteRule ^kultura/([a-z]+)/([a-z]+)$ kultura.php?a=$1&strona=$2 [L]
 

Zamiast tej:

RewriteRule ^kultura/([a-z]+)/([a-z]+)\?([0-9]+)$ kultura.php?a=$1&strona=$2&page=$3 [L]
 

Mam taki link: /kultura/podroze/travel i dodaje np /page/1 to ucina link do /kultura/podroze/page/1 :( A ma byś tam w linku jeszcze słowo travel. jak dam np -page/3 ten sam efekt. Tylko jak daje: ?page/1 to link jest wyświetlany w pełni :/ ale nie wiem jak regułem do mog_rewrite napisać :/

0

Ten link nie działa: http://127.0.0.1/travel/kultura/galerie/handlowe?3
A ten np juz tak:
http://127.0.0.1/travel/kultura/galerie/handlowe

RewriteEngine on
DirectoryIndex index.php


RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^index$ index.php [L] 
RewriteRule ^kultura$ kultura.php [L] 
RewriteRule ^site_map$ site_map.php [L] 
RewriteRule ^oferta$ oferta.php [L] 

RewriteRule ^Ciekawe-miejsca-([c])-([0-9]+)$ Ciekawe-miejsca.php?strona=$1&id=$2 [L]



RewriteRule ^kultura/([a-z]+)$ kultura.php?strona=$1 [L]
RewriteRule ^kultura/([a-z]+)/([0-9]+)$ kultura.php?strona=$1&b=$2 [L]
RewriteRule ^kultura/([a-z]+)/([a-z]+)$ kultura.php?a=$1&strona=$2 [L]



RewriteRule ^kultura/([a-z]+)/([a-z]+)\?([0-9]+)$ kultura.php?a=$1&strona=$2&page=$3 [L]





RewriteRule ^rekreacja/([a-z]+)/?$ rekreacja.php?strona=$1 [L]
RewriteRule ^rekreacja/([a-z]+)/([0-9]+)/?$ rekreacja.php?strona=$1&b=$2 [L]


ErrorDocument 404 http://localhost/turystyczne/index.php
ErrorDocument 500 /internal_error.html
ErrorDocument 401 /authorization_required.html
ErrorDocument 403 /forbidden.html


RewriteRule captcha.jpg /CaptchaSecurityImages.php

0

Nie używasz w ogóle RewriteBase?
Rozumiem, że masz jeden plik .htaccess i ten leży w http://127.0.0.1/travel oraz nie masz w nim rzeczywistego folderu o nazwie "kultura" ?

0

OK, działa. Mam teraz takie linki:

http://127.0.0.1/travel/kultura/galerie/handlowe?page=2

Czy ten zapytajnik(?) w linku nie będzie niebezpieczny? Czy może już tak zostać ? Bo jak wrzucę zamiast niego np / albo - to już cały link nie będzie działać, a nie chce mi się już z tym męczyć

1 użytkowników online, w tym zalogowanych: 0, gości: 1