Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z htaccess na home.pl
Forum PHP.pl > Forum > Serwery WWW
Darnok017
Dzień dobry,

Mam problem z htaccess na serwerze home.pl
Mianowicie chodzi o to, że próbuję pozbyć się ?id= z adresu URL
W kodzie strony wygląda to następująco

  1. if ($row['Count'] > 0) {
  2. echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  3. display_children($row['id'], $level + 1);
  4. echo "</li>";
  5. } elseif ($row['Count']==0) {
  6. echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  7. } else;
  8. }
  9. echo '</ul>';
  10. }


Natomiast htaccess wygląda tak:

  1. RewriteEngine On
  2.  
  3. RewriteCond %{HTTP_HOST} ^(www\.)?megakan-bud\.pl [NC]
  4. RewriteRule ^(.*)$ <a href="http://biower.pl/$1" target="_blank">http://biower.pl/$1</a> [R=301,L]
  5.  
  6. RewriteRule ^?id=([A-Za-z0-9-]+).php /$1 [L]


Przejrzałem już Google i to forum i niestety nie znalazłem nic co pomogło by mi w pozbyciu się tego nieszczęsnego ?id=
nospor
No ale to:
echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
samo ci nie zniknie....

Musisz zamienic na:
echo '<li><a href="/' . $row['url'] . '">' . $row['nazwa'] . '</a>';
Darnok017
Niestety po zmianie tej części kodu, którą mi podesłałeś, niektóre linki kierowały na 404 Not found, a inne na starą stronę.
nospor
Bo pewnie jeszcze gdzies masz blad. Ja ci tylko powiedzialem, ze jak cchcesz miec link w postaci:
http://mojastrona/costam
to takowy masz wpisac w html.
Darnok017
Rozumiem, że za pomocą htaccess nie pozbędę się tego bez zmian w kodzie tak?
nospor
Tak.w tym wypadku htaccess sluzy tylko do konwersji z
http://mojastrona/costam
na
http://mojastrona?id=costam
i nic wiecej
Darnok017
Szkoda, że nie można zrobić tego w drugą stronę.
No dobra, ustawiłem tak jak mi powiedziałeś.

Te, które wyświetla mi jako 404 Not Found to sobie ogarnę, ale chyba już kwestią .htaccess jest to, że niektóre linki prowadzą do starej strony.

Chyba udało mi się dojść dlaczego tak się dzieje.
Ktoś zakodował stronę w taki sposób, iż nie ma żadnych plików na serwerze tylko pobiera informacje z bazy danych, dlatego to ?id= jest niezbędne do działania strony.

W takim wypadku zapewne nie ma dobrego rozwiązania jak przekodowanie strony.
nospor
Cytat
Ktoś zakodował stronę w taki sposób, iż nie ma żadnych plików na serwerze tylko pobiera informacje z bazy danych, dlatego to ?id= jest niezbędne do działania strony.
Bylem swiecie przekonany iz zdawales sobei z tego sprawe. Inaczej czemu te ?id= w url bys mial? DLa zabawy? wink.gif

Poto wlasnie zamienia sie te ?id=costam na
http://mojastrona/costam
by ladniej wygladalo. A htaccess wewnetrznie i tak zmieni to na ?id=costam i wszystko dziala jak dzialalo.

Darnok017
No dobra, to muszę po prostu przekodować stronę.

Dziękuję za informacje i pomoc. Temat można zamknąć
trzczy
A przekierowanie R=301 nie zmienia adresu w pasku adresu przeglądarki?
Darnok017
Mam dodać w tej linijce?

  1. RewriteRule ^?id=([A-Za-z0-9-]+).php /$1 [L]


Bo nie do końca rozumiem.
Aktualny plik htaccess, który wrzuciłem tutaj niestety nic nie zmienia.

W URL nadal widnieje www.biower.pl/?id=oferta.php
Index.php jest zakodowany w taki sposób, że pobiera informacje z bazy danych. Udało mi się dostać do niej dostęp i widziałem, że strony są właśnie tam zakodowane.

Chyba, że istnieje jakiś sposób, aby w kodzie ukryć to ?id=
trzczy
Musimy ustalić, co to znaczy ukryć ?id= w kodzie.

Jak programista to ukryje, to jak sprawdzisz, czy on to ukrył? Sorka ale czasami intuicja to za mało do zrozumienia autora wątku, więc proponuję podejście test driven.
Darnok017
Chodzi mi o to, czy jest możliwość, aby wprowadzić ?id= w treści kodu w taki sposób, aby nie wyświetlało się w adresie URL, lub dopisać jakiś skrypt, który po prostu to ukryje we wspomnianym wcześniej adresie URL.

  1. if ($row['Count'] > 0) {
  2. echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  3. display_children($row['id'], $level + 1);
  4. echo "</li>";
  5. } elseif ($row['Count']==0) {
  6. echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  7. } else;
  8. }
  9. echo '</ul>';
  10. }
trzczy
Czyli ktoś klika na linka http://example.com/site.php/?id=43 i wtedy w pasku adresu przeglądarki pojawia się adres http://example.com/site.php.

Następnie otwiera się strona http://example.com/site.php a wartość $_GET['id'] w kodzie strony site.php jest parsowana jako 43?
Darnok017
Zgadza się
trzczy
Obawiam się, że przy nadpisaniu z przekierowaniem owszem pojawi się sam adres bez QS w pasku przeglądarki, ale informacja o id wynoszącym 43 zginie. Na razie nie mam pomysłu.
com
ale ten kod musisz poprawić, nie ukrywać nic wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.