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
if ($row['Count'] > 0) { http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>'; display_children($row['id'], $level + 1); http://www.php.net/echo "</li>"; } elseif ($row['Count']==0) { http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>'; } else; } http://www.php.net/echo '</ul>'; }
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?megakan-bud\.pl [NC] RewriteRule ^(.*)$ <a href="http://biower.pl/$1" target="_blank">http://biower.pl/$1</a> [R=301,L] RewriteRule ^?id=([A-Za-z0-9-]+).php /$1 [L]
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>';
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ę.
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.
Rozumiem, że za pomocą htaccess nie pozbędę się tego bez zmian w kodzie tak?
Tak.w tym wypadku htaccess sluzy tylko do konwersji z
http://mojastrona/costam
na
http://mojastrona?id=costam
i nic wiecej
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.
No dobra, to muszę po prostu przekodować stronę.
Dziękuję za informacje i pomoc. Temat można zamknąć
A przekierowanie R=301 nie zmienia adresu w pasku adresu przeglądarki?
Mam dodać w tej linijce?
RewriteRule ^?id=([A-Za-z0-9-]+).php /$1 [L]
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.
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.
if ($row['Count'] > 0) { http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>'; display_children($row['id'], $level + 1); http://www.php.net/echo "</li>"; } elseif ($row['Count']==0) { http://www.php.net/echo '<li><a href="?id=' . $row['url'] . '">' . $row['nazwa'] . '</a>'; } else; } http://www.php.net/echo '</ul>'; }
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?
Zgadza się
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.
ale ten kod musisz poprawić, nie ukrywać nic
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)