htaccess blokada duplikatów |
htaccess blokada duplikatów |
27.08.2019, 22:45:40
Post
#1
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 8.05.2010 Ostrzeżenie: (0%) |
Czy można osiągnąć następujący efekt:
po wpisaniu https://adresstrony.pl/blog.php --- przekierowanie --> 404, po wpisaniu https://adresstrony.pl/blog.php?id=... --- przekierowanie --> blog.php?id= Ponadto czy można jakoś pominąć duplikaty stron. Strona z wpisem wyświetla się pod adresem /blog.php?id=57, ale istnieje możliwość wyświetlenia tej strony również pod adresem /blog.php?id=testowywpis Czy można ustawić przekierowanie i zablokować indeksowanie tej z id=57 na rzecz tej drugiej? Jak ostatecznie osiągnąć adres https://adresstrony.pl/blog/testowywpis ? Ten post edytował PiotrN 27.08.2019, 22:45:59 |
|
|
28.08.2019, 06:57:29
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Kod RewriteCond %{REQUEST_URI} ^/blog.php$ RewriteCond %{QUERY_STRING} ^$ RewriteRule .* https://adresstrony.pl/blad.php [R=404,L] Jeśli nie zadziała, to zmień drugi warunek na: Kod RewriteCond %{QUERY_STRING} !. Poczytaj o kanonicznych adresach URL. https://kawalekkodu.pl/czy-to-ty-czy-to-ja-...plicate-content Ten post edytował trueblue 28.08.2019, 06:58:22 -------------------- |
|
|
28.08.2019, 12:24:02
Post
#3
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 8.05.2010 Ostrzeżenie: (0%) |
/blog.php?id=0
Można zrobić jeden wyjątek, aby ten powyższy adres był blokowany? Chodzi o ten konkretny adres z id=0. Po wpisaniu /blog.php -- przekierowanie --> 404 Po wpisaniu /blog.php?id=0 -- przekierowanie --> 404 Ten post edytował PiotrN 28.08.2019, 20:20:17 |
|
|
29.08.2019, 07:04:08
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Za drugim warunkiem dodaj flagę: [OR]
i trzeci warunek: Kod RewriteCond %{QUERY_STRING} ^id=0$ Spróbuj takich reguł: Kod RewriteCond %{REQUEST_URI} ^/blog.php$ RewriteCond %{QUERY_STRING} !^id=(\d+)$ [OR] RewriteCond %{QUERY_STRING} ^id=0$ RewriteRule .* https://adresstrony.pl/blad.php [R=404,L] Powinny przekierować wszystkie nienumeryczne (w tym brak) i zerowe id na 404. Ten post edytował trueblue 29.08.2019, 07:25:44 -------------------- |
|
|
29.08.2019, 13:18:00
Post
#5
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 8.05.2010 Ostrzeżenie: (0%) |
Wielkie dzięki! Twoja pomoc jest nieoceniona.
Zastanawiam się jeszcze nad dwoma przypadkami. Oprócz tego co napisałeś dodałem jeszcze do .htaccess poniższą linijkę: Kod RewriteRule ^blog/([^/]*)$ /blog.php?id=$1 [L] O ile /blog.php?id=0 został skutecznie zablokowany, tak /blog/0 nadal nie. Poza tym zastanawiam się, czy można na sztywno ustawić takie przedziały ID, które przekierują na 404 - np. 0-49 (?id=0, ?id=20, /id=49) i 61-100. Znasz może jakieś konkretne żródło, gdzie mógłbym poczytać o tym co dzieję się w tym fragmencie, który opublikowałeś? Ten post edytował PiotrN 29.08.2019, 13:18:25 |
|
|
29.08.2019, 13:26:18
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
https://httpd.apache.org/docs/current/rewrite/
oraz jakiś podręcznik do nauki wyrażeń regularnych. Wyrażenia regularne nie nadają się za bardzo do kryteriów opartych o zakresy liczbowe. Nie możesz tego kontrolować na poziomie kodu? Skąd się bierze adres /blog/0, chcesz powiedzieć, że każdy wpis jest dostępny zarówno w postaci blog.php?id=X jak i blog/X? -------------------- |
|
|
29.08.2019, 14:15:12
Post
#7
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 8.05.2010 Ostrzeżenie: (0%) |
Niestety tak jest - do tej samej strony prowadzą 3 różne adresy:
/blog.php?id=10 /blog/10 /blog/tytul Nie widzę innego rozwiązania. Niemniej, na każdej podstronie z postem jest:
Mogę jakoś zablokować /blog/0? blog.php?id=0 jest już zablokowane i odsyła na 404. Ten post edytował PiotrN 29.08.2019, 14:17:09 |
|
|
29.08.2019, 14:23:51
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Kod RewriteCond %{REQUEST_URI} !^/blog/(\d+)$ [OR]
RewriteCond %{REQUEST_URI} ^/blog/0$ RewriteRule .* https://adresstrony.pl/blad.php [R=404,L] -------------------- |
|
|
29.08.2019, 23:46:44
Post
#9
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 8.05.2010 Ostrzeżenie: (0%) |
Niestety, ale coś nie trybi...
Pewnie problemem jest to: Kod RewriteRule ^blog/([^/]*)$ /blog.php?id=$1 [L] Cały .htaccess: Kod Options -Indexes Index przerwa.html index.php RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^blog/([^/]*)$ /blog.php?id=$1 [L] RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{REQUEST_URI} ^/blog.php$ RewriteCond %{QUERY_STRING} !^id=(\d+)$ [OR] RewriteCond %{QUERY_STRING} ^id=0$ RewriteRule .* https://adresstrony.pl/404.shtml [R=404,L] RewriteCond %{REQUEST_URI} !^/blog/(\d+)$ [OR] RewriteCond %{REQUEST_URI} ^/blog/0$ RewriteRule .* https://adresstrony.pl/404.shtml [R=404,L] Próbowałem usuwać też tymi ogólnodostępnymi metodami rozszerzenia pozostałych podstron, aby zamiast /kontakt.php było /kontakt, ale też nie chciało coś działać... W taki sposób poradziłem sobie z /blog/0: Kod Redirect 301 /blog/0 /404.shtml Chciałbym jeszcze usunąć rozszerzenia .php, aby było /kontakt zamiast /kontakt.php Ten post edytował PiotrN 29.08.2019, 20:54:04 |
|
|
30.08.2019, 08:43:00
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Poszperaj w Google, znajdziesz rozwiązanie ostatniego problemu.
Przy czym linki w serwisie musisz generować bez rozszerzenia .php, jeśli takie istnieją. -------------------- |
|
|
30.08.2019, 23:50:00
Post
#11
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 8.05.2010 Ostrzeżenie: (0%) |
Dziwna sytuacja.
Co zrobić w przypadku, gdy nie mogę dostać się do katalogu /cms z powodu "pętli przekierowań"? "ERR_TOO_MANY_REDIRECTS" Pomaga dopiero gdy wyłączę https:// Kod RewriteCond %{HTTPS} !=on Kod RewriteCond %{HTTPS} !=off Ciasteczka mam włączone, Zgodnie z sugestiami też je usuwałem, Sprawdzałem na trzech różnych przeglądarkach. Jaka może być przyczyna? Pozostaje tylko kontakt z hostingiem? |
|
|
Wersja Lo-Fi | Aktualny czas: 27.09.2024 - 03:20 |