Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Serwery WWW _ Problem z htaccess na home.pl

Napisany przez: Darnok017 24.01.2018, 12:23:50

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. http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  3. display_children($row['id'], $level + 1);
  4. http://www.php.net/echo "</li>";
  5. } elseif ($row['Count']==0) {
  6. http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  7. } else;
  8. }
  9. http://www.php.net/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=

Napisany przez: nospor 24.01.2018, 12:28:49

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>';

Napisany przez: Darnok017 24.01.2018, 12:38:07

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ę.

Napisany przez: nospor 24.01.2018, 12:49:04

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.

Napisany przez: Darnok017 24.01.2018, 12:49:54

Rozumiem, że za pomocą htaccess nie pozbędę się tego bez zmian w kodzie tak?

Napisany przez: nospor 24.01.2018, 12:52:08

Tak.w tym wypadku htaccess sluzy tylko do konwersji z
http://mojastrona/costam
na
http://mojastrona?id=costam
i nic wiecej

Napisany przez: Darnok017 24.01.2018, 13:18:03

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.

Napisany przez: nospor 24.01.2018, 13:34:51

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.


Napisany przez: Darnok017 24.01.2018, 13:58:37

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

Dziękuję za informacje i pomoc. Temat można zamknąć

Napisany przez: trzczy 24.01.2018, 14:40:30

A przekierowanie R=301 nie zmienia adresu w pasku adresu przeglądarki?

Napisany przez: Darnok017 24.01.2018, 15:26:06

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=

Napisany przez: trzczy 24.01.2018, 15:39:13

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.

Napisany przez: Darnok017 24.01.2018, 15:54:26

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. http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  3. display_children($row['id'], $level + 1);
  4. http://www.php.net/echo "</li>";
  5. } elseif ($row['Count']==0) {
  6. http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>';
  7. } else;
  8. }
  9. http://www.php.net/echo '</ul>';
  10. }

Napisany przez: trzczy 24.01.2018, 16:55:38

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?

Napisany przez: Darnok017 24.01.2018, 17:17:22

Zgadza się

Napisany przez: trzczy 24.01.2018, 17:53:29

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.

Napisany przez: com 24.01.2018, 18:34:50

ale ten kod musisz poprawić, nie ukrywać nic wink.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)