Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter]jak uniemożliwić dostęp do strony z kilku adresów
Forum PHP.pl > Forum > PHP > Frameworki
szajens
Witam,

Jak wiem dostęp do adresów w CI jest na zasadzie kontroler/metoda dla mnie nie dopuszczalne jest aby był dostęp do jednej strony z 2 lub więcej adresów.
  1. localhost/sklep/pokaz/$1
  2. localhost/index.php/sklep/pokaz/$1


Jeżeli użyje wildcard CI i np:

  1. $route['produkt/(:num)'] = "sklep/pokaz/$1";


to nagle mam dostęp z 3 adresów do tej samej strony(wyniku) co nie służy zupełnie SEO:

  1. localhost/sklep/pokaz/$1
  2. localhost/index.php/sklep/pokaz/$1
  3. localhost/prosukt/$1


Jest w ogóle możliwość rozwiązania tego problemu?
rad11
Spróbuj dodać do htaccess:

  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|images|robots\.txt)
  3. RewriteRule ^(.*)$ /index.php/$1 [L]


Ogólnie szukaj w google pod frazą : https://www.google.pl/webhp?sourceid=chrome...php%20for%20seo
szajens
Oczywiście próbowałem wcześniej już podany przez Ciebie sposób. Jednak on daje możliwość wejścia do kontrolera bez potrzeby używania index.php, ale to wcale nie rozwiązuje problemu bo mamy wtedy duble. Jakiś inny pomysł czy odpuścić sobie CI. Powiem szczerze że jako jedyny mi podszedł i zaczynam się go uczyć, szkoda by było dać se z nim spokój.
Pyton_000
Zawsze powinieneś mieć tylko 2 adresy do zasobu. Ten z index.php i bez.
Z index.php rozwiązuje sprawa .htaccess

Każdy dodatkowy adres który mapuje Ci na ten sam zasób tworzysz sobie sam, więc nie bardzo wiem w czym problem.
szajens
no właśnie nie rozwiązuje, można dzięki temu htaccess poprostu wyświetlić zasób bez index.php ale strona jest dalej dostępna pod dwoma adresami (testowane) z index i bez index,

Cytat
Każdy dodatkowy adres który mapuje Ci na ten sam zasób tworzysz sobie sam, więc nie bardzo wiem w czym problem.

chodzi o to że jak stworze sobie sam zasób to nie powinno być go dostępnego pod innym



edit: pierwszy problem rozwiązuje następujący htaccess:
Kod
<IfModule mod_rewrite.c>

# Enable Rewrite Engine
# ------------------------------
RewriteEngine On
RewriteBase /

# Redirect index.php Requests
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

# Standard ExpressionEngine Rewrite
# ------------------------------
RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

</IfModule>


Jednak dalej zastanawiam się nad drugim problemem odnośnie wilcard
markonix
Może w main kontrolerze sprawdzaj po full adresie czy to adres z index.php w ścieżce i podejmuj odpowiednik krok - przekierowanie na ten sam adres bez index lub 404().
szajens
Właśnie myślałem że CI ma coś gotowego, i chciałem uniknąć tego sposobu, mimo tego dziękuje Ci za pomoc.

aras785
Czyli chcesz tylko uruchamiać te kontrolery które masz w routers.php ?
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-2025 Invision Power Services, Inc.