Skocz do zawartości

oscommerce - subdomena zamiast zmiennej - htaccess


natasha

Rekomendowane odpowiedzi

.htaccess zostaje standardowy a zmienna manufactures_id przekazana przez niego zostaje podmieniona na wartość otrzymaną z tablicy $producenci. Tablica producenci zawiera listę producentów i odpowiednie manufactures_id danego producenta przypisane jako klucz.

Skrypt wyłuskuje z nazwy hosta (subdomeny) nazwę producenta i szuka odpowiedniego(manufactures_id) klucza w tablicy i podmienia zwartość tej zmiennej.

<?php
 $producenci = array(12 => 'audi', 17 => 'bmw', 100 => 'mercedes');
//lista producentów z przypisanymi manufactures_id wypisana ręcznie
 /*można zamienić na odpowiednie zapytanie do bazy*/
 if ($producent = str_replace(array('www.', '.adres.com', 'adres.com'), '', $_SERVER['HTTP_HOST'])) {
//wyciąganie nazwy producenta z subdomeny wpisanej w pasku przeglądarki
  if ($klucz = array_search($producent, $producenci))
//szukanie pasującego klucza(manufactures_id) w przygotowanej tablicy
	  $_GET['manufacturers_id'] = $klucz;
//podmiana manufactures_id na wartość klucza 
  else {
	  header("HTTP/1.0 404 Not Found");
	  exit('nie ma takiego producenta');
//wyświetlenie strony błędu jeżeli nie znaleziono w tablicy producenta
  }
 }
//skrypt podmieni manufactures_id tylko kiedy wpiszemy w pasku adresu subdomenę
?>

Ale tak jak pisałem wcześniej trzeba w skrypcie zmienić wyświetlanie linków i wtedy dopiero dostosować do tego ht.

E: Na tym ma przecież polegać ten myk, tak żeby ładnie wyglądało: https://www.audi.adres.com/ ma wyświetlać produkty firmy audi ;)

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

takie coś miedzy innymi sie pojawia po wpisaniu print_r($_SERVER);

[argv] => Array

(

[0] => manufacturers_id=nazwa

)

a tym kodem htaccess chciałem zamienic manufacturers_id=nazwa na nazwa.domena.pl

RewriteCond %{HTTP_HOST} !^www.domena.pl$

RewriteCond %{HTTP_HOST} ^(www\.)?(.+).domena.pl$

RewriteRule .* ?manufacturers_id=%2

Jednak sklep wyswietla mi komunikat: "Brak produktów w tej kategorii." a poza tym jakby plik ze stylem style.css nie był interpretowany oraz nie było zadnych obrazków. dziwne

Odnośnik do komentarza
Udostępnij na innych stronach

.ht nie służy do zamiany linków, to się robi w skrypcie. .ht służy między innymi do "przetłumaczenia" przyjaznych linków na formę zrozumiałą dla skryptu a nie odwrotnie. Skrypt musi wyświetlać pożądaną formę linków a ht powinien ją poprawnie "przetłumaczyć". Dlatego mawia się "przepisywanie linków" :D

https://www.forum.optymalizacja.com/index.php?showtopic=62516

PS Polecam odrobinę poczytać lub komuś to zlecić bo bez tego nic nie wyjdzie :P

Podany przez ciebie ht przypisuje do manufacturers_id nazwę producenta a skrypt oczekuje numerycznego id producenta takiego jakie jest w bazie danych.

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Bez znajomości podstaw php nie poradzisz sobie z przerobieniem skryptu. Wklejony wcześniej skrypt już robi to co próbujesz osiągnąć w ht.

znam podstawy php tylko chodzi o przerobienie skryptu sklepu tak?? a nie tego Twojego ?? ten który mi podałeś jest juz ok ??

jakie ma miec działanie ten skrypt ? to ja juz sobie poradze.

Odnośnik do komentarza
Udostępnij na innych stronach

W moim musisz wypełnić tablicę $producenci odpowiednimi danymi i dokleić ten kod na początku index.php. Musisz znaleźć kod odpowiedzialny za wyświetlanie linków, wprowadzić tam niezbędne zmiany żeby producenci byli wyświetlani jako subdomena. Na koniec pozostają zmiany w ht, takie żeby w przypadku odwołania do subdomeny istniały odpowiednie reguły przepisywania.

...

Dodatkowo można przerobić mój skrypt tak aby zamiast tablicy $producenci korzystał z odpowiedniego zapytania do bazy cache'owanego za pomocą serialize, co pozwoli na automatyczną aktualizację producentów zamiast ręcznego listowania.

...

Wyżej wymienione rozwiązania i tak są "na około", bez znajomości skryptu. Najlepszym rozwiązaniem było by całkowite przerobienie skryptu sklepu.

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

W moim musisz wypełnić tablicę $producenci odpowiednimi danymi i dokleić ten kod na początku index.php. Musisz znaleźć kod odpowiedzialny za wyświetlanie linków, wprowadzić tam niezbędne zmiany żeby producenci byli wyświetlani jako subdomena. Na koniec pozostają zmiany w ht, takie żeby w przypadku odwołania do subdomeny istniały odpowiednie reguły przepisywania.

...

Dodatkowo można przerobić mój skrypt tak aby zamiast tablicy $producenci korzystał z odpowiedniego zapytania do bazy cache'owanego za pomocą serialize, co pozwoli na automatyczną aktualizację producentów zamiast ręcznego listowania.

...

Wyżej wymienione rozwiązania i tak są "na około", bez znajomości skryptu. Najlepszym rozwiązaniem było by całkowite przerobienie skryptu sklepu.

dałam w Twoim skrypcie zamiast $_GET['manufacturers_id'] takie cos: $HTTP_GET_VARS['manufacturers_id'] i działa ... tylko mam problem z przejsciem teraz np. w inną podstrone sklepu gdzie nie ma zmiennej manufacturers_id w index.php albo w ogole sa inne pliki. caly czas np. nazwa.domena.pl zostaje natomiast po przejsciu na inna podstrone powinno znikac.

Odnośnik do komentarza
Udostępnij na innych stronach

$HTTP_GET_VARS jest przestarzałe ale oscommerce może tego wymagać.

zostaje natomiast po przejsciu na inna podstrone powinno znikac.

Skrypt wyświetla linki względne "/index.php" do którego jest doklejany host nazwa.domena.pl. Zmień linki na bezwzględne z odpowiednią subdomeną w skrypcie.

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności