Skocz do zawartości

oscommerce - subdomena zamiast zmiennej - htaccess


natasha

Rekomendowane odpowiedzi

Witam.

Od dłuższego czasu męczę się z takim zagadnieniem:

Mam sklep oparty na oscommerce i chciałabym żeby producenci byli subdomeną czyli np. pampers.domena.pl

W teju chwili mam zainstalowany moduł dla przyjaznych linków który za pomocą htaccess zmienia adres z formy np.

domena.pl/index.php?manufacturers_id=145

na

domena.pl/pampers-m-145.html

za pomocą chyba tej linijki kodu:

RewriteRule ^(.*)-m-([0-9]+)$ index.php?manufacturers_id=$2&%{QUERY_STRING}

Za pomocą jakiego kodu zamienić postać

domena.pl/index.php?manufacturers_id=145

na

pampers.domena.pl ??????

Próbowałam zrobi tak aby zamienić już zamieniony adres domena.pl/pampers-m-145.html na pampers.domena.pl ale nie dałam rady.

Później chciałam spróbować pogrzebać na tym pierwotnym adresie czyli w takie formie domena.pl/index.php?manufacturers_id=145 i udało mi sie tylko zaminić do takie formy:

145.domena.pl a nie o to chodziło - zrobiłam to za pomoca kodu:

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

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

RewriteRule .* ?manufacturers_id=%2

Proszę o pomoc, przegrzebałam google itd. i nie mogę sobie poradzic, będe wdzięczna

Odnośnik do komentarza
Udostępnij na innych stronach

Chyba najłatwiej to zrobić w php - ustawić zmienną $_GET['manufacturers_id'] w zależności od $_SERVER['HTTP_HOST'] a do .ht wprowadzić tylko niezbędne poprawki.

E: Bo zamiana nazwy producenta na id wymagała by masę regułek w ht. A w php można użyć na sztywno tablicy asocjacyjnej producent=>id lub dodać tabelę do bazy (raczej taka już istnieje).

Jest jeszcze możliwość użycia takich subdomen pampers85.domena.pl , ale kiepsko to wygląda.

I to: https://httpd.apache.org/docs/1.3/mod/mod_r...te.html#mapfunc .

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Chyba najłatwiej to zrobić w php - ustawić zmienną $_GET['manufacturers_id'] w zależności od $_SERVER['HTTP_HOST'] a do .ht wprowadzić tylko niezbędne poprawki.

E: Bo zamiana nazwy producenta na id wymagała by masę regułek w ht. A w php można użyć na sztywno tablicy asocjacyjnej producent=>id lub dodać tabelę do bazy (raczej taka już istnieje).

E2: Jest jeszcze możliwość użycia takich subdomen pampers85.domena.pl , ale kiepsko to wygląda.

wszystko pięknie tylko jak zabrać się za ten php ?? już od kilku dni nad tym siedze :/ az w koncu postanowiłam męczyć htaccess

a ta E2 - trudna sprawa ?? subdomen pampers85.domena.pl może byc na chwilke dobrym rozwiązaniem chociaż docelowo zależy mi na pampers.domena.pl... trudno jest mi ogarnąć dlaczego z liczbą mozna a już bez niej jest cięzko.

Trotyl jezeli potrafisz zrobić z liczbą w subdomenie to równiez prosze o podpowiedź !

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz spróbować tego:

https://httpd.apache.org/docs/1.3/mod/mod_r...te.html#mapfunc

Ale to rozwiązanie także jest toporne bo będzie wymagało ręcznej aktualizacji w razie zmiany asortymentu.

Opłaca się w ogóle ten sklep dzielić na subdomeny? Może jest jakieś dedykowane rozwiązanie dla tego skryptu?

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Opłaca się w ogóle ten sklep dzielić na subdomeny? Może jest jakieś dedykowane rozwiązanie dla tego skryptu?

opłaca sie - po tym jak konkurencja tak zrobiła to wyprzedziła mnie o kilka pozycji. Poza tym chodzi tylko o subdomeny dla producentów.

Możesz spróbować tego:

https://httpd.apache.org/docs/1.3/mod/mod_r...te.html#mapfunc

Ale to rozwiązanie także jest toporne bo będzie wymagało ręcznej aktualizacji w razie zmiany asortymentu.

w razie zmiany asortymentu(produktów) czy dostawców/producentów ?? bo ja chce dodawac subdomene tylko do dostawców a nie asortymentu (poszczegolnych produktów).

producentów będzie od kilku do kilkunastu wiec zmiany ręczne nie będą problemem. Pierwszy raz widze tą funkcję do której link mi przysłałes i ciezko jest mi cokolwiek zrozumiec :)

edit: wyczytałem ze ta funkcja zamieni np. numer 1 na jakas nazwe - to by pasowało idealnie... prosze o wskazówke jak ma wygladac ten plik z mapą w txt

Odnośnik do komentarza
Udostępnij na innych stronach

jeśli podasz adres domeny to będzie na pewno łatwiej pomóc

nie mogę bo szef mnie zabije :) powiedzmy ze będzie to domena.pl

a przyporządkować w tym pliku txt dla RewriteMap muszę:

np.

1 - pampers

2 - inna_firma2

3 - inna_firma3

itd.

dla każdej domeny pewnie będzie ten sam schemat

Odnośnik do komentarza
Udostępnij na innych stronach

Wystarczy odpowiedni map.txt:

audi 112
bmw 23
mercedes 45

i wprowadzenie zmian w ht, coś w tym stylu:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.adres.com$ [NC]
RewriteRule .* index.php?auto=${mapa:%2} [L]

E:l

cholera to by mi wszystko załatwiło ale dostałam wiadomosc od home.pl Posiadam hostind dedykowany a nie serwer dedykowany a on nie jest na apache tylko na IdeaWebServer. Porażka!

Odnośnik do komentarza
Udostępnij na innych stronach

No to w php array_search ;)

+

$_GET['manufacturers_id'] w zależności od $_SERVER['HTTP_HOST']

minuta pisania.

E:

<?php
 $producenci = array(12 => 'audi', 17 => 'bmw', 100 => 'mercedes');
 /*można zamienić na odpowiednie zapytanie do bazy*/
 if ($producent = str_replace(array('www.', '.adres.com', 'adres.com'), '', $_SERVER['HTTP_HOST'])) {
  if ($klucz = array_search($producent, $producenci))
	  $_GET['manufacturers_id'] = $klucz;
  else {
	  header("HTTP/1.0 404 Not Found");
	  exit('nie ma takiego producenta');
  }
 }
?>

Mniej więcej coś w tym stylu z tym że sam skrypt też musi wyświetlać odpowiednie linki ;)

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

No to w php array_search ;)

+

$_GET['manufacturers_id'] w zależności od $_SERVER['HTTP_HOST']

minuta pisania.

E:

<?php
 $producenci = array(12 => 'audi', 17 => 'bmw', 100 => 'mercedes');
 /*można zamienić na odpowiednie zapytanie do bazy*/
 if ($producent = str_replace(array('www.', '.adres.com', 'adres.com'), '', $_SERVER['HTTP_HOST'])) {
  if ($klucz = array_search($producent, $producenci))
	  $_GET['manufacturers_id'] = $klucz;
  else {
	  header("HTTP/1.0 404 Not Found");
	  exit('nie ma takiego producenta');
  }
 }
?>

Mniej więcej coś w tym stylu z tym że sam skrypt też musi wyświetlać odpowiednie linki ;)

to jest tez fajny pomysł ale po wpisaniu analogicznie np. audi.adres.com wyswietla mi "nie ma takiego producenta" i to nawet przy stronie głównej... a on ma tworzyc te subdomeny tylko dla producentów czyli jezeli w index.php jest zmienna manufactures_id=liczba np. index.php?manufactures_id=1 w innym przypadku ma wyswietlac to co wyswietlało wczesniej

poprawka:

dopisałam linijke echo $klucz;

po wpisaniu np. audi.domena.com pojawia sie numer ktory został przyporzadkowany w array czyli: np. 87

poniżej juz pojawia sie strona główna

teraz tylko starczy cos pogrzebac w htaccessie ?? tak ma działac skrypt phpa ?? nie powinna sie pojawiac podstrona index.php?manufacturers_id=87 a w pasku adresu w przegladarce audi.domena.com ??

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