![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 19.10.2008 Ostrzeżenie: (0%)
|
Witam.
Postanowiłem zapytać na forum, gdyż w internecie nie potrafiłem znaleźć odpowiedzi na mój problem. Jestem w sumie samoukiem jeśli chodzi o php, tak więc nie znam większości pojęć i ciężko mi cokolwiek znależć. Prosiłbym o napisanie np. o czym mógłbym szukać, aby rozwiązać problem. Znalazłem jedynie http://forum.php.pl/index.php?showtopic=77618&hl=slash ale nie dało to odpowiedzi na mój problem A co do samego problemu, to chodzi mi o to, że gdy użyję mod rewrite do przepisania adresu 11,jakis-adres.html >> index.php?adres=11,jakis-adres to jest wszystko ok, ale ja chciałbym dodać do strony możliwość wyboru języka, po czym adres miałby wyglądać np. en/11,jakis-adres.html i przepisywać na index.php?adres=11,jakis-adres&lang=en. Wszystko jest w porządku, przepisuje świetnie, ale w przypadku użycia języka wszystkie odwołania do katalogów szaleją i chcą brać pliki w tym przypadku z folderu en. Mógłbym sprawdzać, czy jest wybrany język i wtedy dodawać do odwołań ../ ale to chyba nie za dobre rozwiązanie, a do tego mało wygodne. Chciałbym także umieć tworzyć adresy typu en/gallery/5-cat.html z pominięciem mojego problemu. W podanym przeze mnie linku jest rozwiązanie tego poprzez użycie <base href... ale ja chciałbym, aby było to uniwersalne i działało niezależnie od miejsca, na którym się znajduje. Czy jest na to jakiś sposób? W ostateczności poradzę sobię sprawdzając ile jest takich niby katalogów i dodam tyle ../ ale wolałbym wykonać to jednak w sposób cywilizowany, a sądzę, że są tu ludzie o wiele bardziej zaznajomieni z tematem niż ja i będą w stanie mi pomóc. Wystarczy mi, jeśli podpowiecie, w jakich okolicach miałbym szukać, albo dacie nazwę polecenia, to już postaram się poradzić sam. Pozdrawiam serdecznie |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 15 Dołączył: 29.04.2005 Skąd: Gdynia Ostrzeżenie: (0%)
|
Nie ma...Tylko linki bezwzględne lub <base href="">.
Pozdrawiam |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 3 Dołączył: 23.10.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Nie wiem dokładnie czy o to chodzi... najprościej jest wszystkie zapytania kierować do jednego pliku np index.php a potem w nim analizować _SERVER["REQUEST_URI"]
do tego musisz wykorzystać .htaccess Kod <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> i teraz wywołując adres www.twojastrona.pl/en/gallery/5-cat.html tak naprawdę wywołany zostanie ndex.php. Następnie:
dodatkowo odpowiednimi funkcjami można usunąć .html z końca _SERVER["REQUEST_URI"] itd itd... to tylko zamysł działania. .htaccess przekierowuje do index.php tylko żądania do plików/katalogów nie istniejących na serwerze dzięki czemu nie zakłóca odwołań do statycznych plików witryny np style czy zdjęcia. Ten post edytował Kamson 19.10.2008, 14:38:03 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 19.10.2008 Ostrzeżenie: (0%)
|
Dzięki za odpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kamson >> Skorzystałem z Twoich podpowiedzi, przy czym zamieniłem ostatnią linijkę z htaccess na RewriteRule ^(.*) index.php [L] (przy RewriteRule . /index.php [L] wyświetla "No input file specified.") ale wciąż to samo. Po wpisaniu adresu samej strony jest ok, style i obrazki się ładują, natomiast wpisując en/gallery/5-cat.html obrazki itd. są (chcą być:P) wczytywane z en/gallery/, czyli z tego miejsca, które podajemy przeglądarce, a nie tego, które przekazuje htaccess. Zmienne odczytują się w obu przypadkach prawidłowo, ale właśnie to wczytywanie plików jest dla mnie priorytetem. Chciałbym aby wyglądało to mniej więcej tak: Katalog strony np. strona_internetowa Katalog styli, grafiki itd - pliki Wszelkie grafiki i style miałyby ścieżkę pliki/jakiś_plik.* i będąc na głównym katalogu (np. strona_internetowa/oferta.html) wczytywałyby się z "strona_internetowa/pliki" i z tego samego także miejsca wczytywałyby się mając adres np. strona_internetowa/en/oferta.html, a nie tak jak teraz z strona_internetowa/en/pliki/ Dodatkowo, linki na stronie głównej miałyby ścieżkę np. kontakt.html, a w drugim przypadku - en/kontakt.html aby zachować za każdym razem zmienną języka. Jest tu jednak mały problem, bo nawet jeśli uzyskałbym sytuację, w której te pliki wczytywałyby się z dobrego miejsca to linki zapewne też kierowałyby w to podstawowe miejsce. Rozwiązałem to w ten sposób: .htaccess Kod RewriteEngine On Options +FollowSymlinks RewriteBase / DirectoryIndex index.php RewriteEngine on RewriteRule ^(.+)/(.+).html$ index.php?lang=$1&atr=$2 [L] RewriteRule ^(.+).html$ index.php?atr=$1 A kod php: Kod if($_GET[lang]) {$base_url="../";} Do każdego odwołania do zewnętrznego pliku wpisuję dopisuję wtedy $base_url i wszystko śmiga. Przy dowolnej ilości atrybutów ze slashem na końcu możnaby napisać skrypt zliczający je i wpisujący daną ilość "../" do $base_url. Teoretycznie wszystko działa w porządku, ale czy jest wykonane poprawnie? Może jakieś inne pomysły ?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam serdecznie |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 3 Dołączył: 23.10.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Jeśli serwis znajduje się w głównej ścieżce domeny np www.twojastrona.pl i dalej podstrony wywołujesz www.twojastrona.pl/en/gallery/5-cat.html to w html'u ścieżki do plików podajesz bezwzględne
np. <img src="/zdjecia/zdjecie1.jpg" /> wtedy mimo wywołania strony www.twojastrona.pl/en/gallery/5-cat.html zdjęcie zostanie pobrane z www.twojastrona.pl/zdjecia/zdjecie1.jpg jeśli natomiast serwis znajduje się gdzieś głębiej np. www.twojastrona.pl/serwisy/twojserwis/ i podstrone wywołujesz www.twojastrona.pl/serwisy/twojserwis/en/gallery/5-cat.html to w html'u podając ścieżkę bezwzględną musisz uwzględnić zagłębienie do serwisu <img src="/serwisy/twojserwis/zdjecia/zdjecie1.jpg" />. Można do zrobić w miarę dynamicznie generując np. stałą define('SCIEZKA_SERWISU','/serwisy/twojserwis'); i w html o ile przelatuje przez parser php wstawić zdjęcie <img src="<?=SCIEZKA_SERWISU?>/zdjecia/zdjecie1.jpg" /> |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Zrób tak jak radzi Kamson plus ja bym Ci radził używanie tylko jednej zmiennej $_GET - tak jest prościej. Odbierasz tą zmienną gdzieś na początku skryptu i parsujesz, dzielisz explodem wg upodobania - łatwiej zmienić klasę/funkcję do tworzenia/odczytywania adresów niż bawić się w kilkaset reguł w .htacces (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jak sobie to zorganizujesz to Twoja sprawa - np. / - kategorie, myślnik - słowa kluczowe, średnik - zmienne, przecinek - parametry itp. itd. etc.
Następnie wystarczy użyć podobnej funkcji/klasy do wygenerowania bieżącej lokalizacji, którą wstawiasz do <base /> http://algorytmy.pl/doc/xhtml/?id=1008 - tu masz przykład. Wygodniej jest pisać np. artykuł i dawać src="obrazki/żółw.jpg" niż parsować ścieżki wszystkich elementów - lepiej chyba tylko podmieniać adres w <base>? Spróbuj, szybko przekonasz się o zaletach używania <base>. |
|
|
|
![]() ![]() |
|
Aktualny czas: 26.12.2025 - 08:24 |