Autor Zpráva
jirkaK
Profil *
Potřebuji nastavit htaccess, aby se web choval takto:

1) 301 přesměrování z domény nhopatovice.cz na www.nhopatovice.cz

2) zachování SEO adres: např.: www.nhopatovice.cz/novinky.html, www.nhopatovice.cz/navstevni-kniha.html, www.nhopatovice.cz/vysledky/sezona-2009-2010/muzi-a.html

3) 301 přesměrování z adres nekončících .html např.: www.nhopatovice.cz/novinky na www.nhopatovice.cz/novinky.html

htaccess zatím obsahuje toto (mám zakomentované dva řádky, které by se právě meli starat o přesměrování z domény bez www na s www):

Options +FollowSymLinks
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  
  
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # Administration URL rewriting.
  RewriteRule ^admin(.*)$ admin/index.php?$1 [L,QSA]
    
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # Main URL rewriting.

 
#RewriteCond %{HTTP_HOST} ^nhopatovice\.cz [NC]
#RewriteRule (.*) http://www.nhopatovice.cz/$1 [R=301,QSA]


RewriteRule ^(.*)$ index.php?$1 [QSA,L]

</IfModule>


Problém je ten, že jsem zkoušel za pomocí několika návodů nastavit funkčnost takovou, jako popisuji výše, ale nepodařilo se to. Nejblíž jsem byl, když se správně doména přesměrovávala na adresu s www, ale před adresu stránky se mě cpal "?" (www.nhopatovice.cz/?novinky) a nebyl jsem schopný se ho zbavit. Přesměrování na adresy končící vždy html už vůbec ne.

Víte jak na to?
Joker
Profil
jirkaK:
Problém je ten, že jsem zkoušel za pomocí několika návodů nastavit funkčnost takovou, jako popisuji výše, ale nepodařilo se to.
Tak sem hoďte nějaký z těch pokusů.
Jak máme jinak vědět, co v nich bylo špatně?
jirkaK
Profil *
Tak sem hoďte nějaký z těch pokusů.
Jak máme jinak vědět, co v nich bylo špatně?


takže první příklad:

Options +FollowSymLinks
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  
  
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # Administration URL rewriting.
  RewriteRule ^admin(.*)$ admin/index.php?$1 [L,QSA]
    
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # Main URL rewriting.


RewriteRule ^(.*) index.php?$1 [QSA]
 
RewriteCond %{HTTP_HOST} ^nhopatovice\.cz [NC]
RewriteRule (.*) http://www.nhopatovice.cz/$1 [R=301,QSA]


</IfModule>


chová se to následovně:
- zadám do prohlížeče nhopatovice.cz přesměruje na www.nhopatovice.cz (to je ok)
- zadám do prohlížeče nhopatovice.cz/tabulky.html přesměruje na www.nhopatovice.cz/index.php?tabulky.html (má být www.nhopatovice.cz/tabulky.html)
- zadám... nhopatovice.cz/tabulky/sezona-2009-2010.html --> http://www.nhopatovice.cz/index.php/sezona-2009-2010.html?tabulky/sezona-2009-2010.html (má být www.nhopatovice.cz/tabulky/sezona-2009-2010.html)
Joker
Profil
jirkaK:
Aha, tak problém spočívá v tom, že se nejdřív uplatní to přepsání na index.php?adresa a potom přesměrování na tvar s "www."

Zkuste přesměrování na tvar s "www." (řádek 23-24) dát na začátek a přidat parametr L.
jirkaK
Profil *
Zkuste přesměrování na tvar s "www." (řádek 23-24) dát na začátek a přidat parametr L.

Options +FollowSymLinks
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  
  
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # Administration URL rewriting.
  RewriteRule ^admin(.*)$ admin/index.php?$1 [L,QSA]
    
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  # Main URL rewriting.


RewriteCond %{HTTP_HOST} ^nhopatovice\.cz [NC]
RewriteRule (.*) http://www.nhopatovice.cz/$1 [R=301,QSA,L]

RewriteRule ^(.*) index.php?$1 [QSA]
 

</IfModule>


vyhodí 404 stránka nenalezena + odpálí css, ale to by nebyl problém (mohl bych ho zapsat absolutní cestou)
Kajman_
Profil *
Dát na začátek a posunout o jeden řádek nahoru není to samé. Zkuste to dát na začátek - tedy hned za RewriteEngine on nebo rewritebase.
jirkaK
Profil *
Dát na začátek a posunout o jeden řádek nahoru není to samé. Zkuste to dát na začátek - tedy hned za RewriteEngine on nebo rewritebase.

díky, tady byl zapokaný pes :)

Takže teď mě funguje přesměrování z adres bez www na adresy včetně www. Teď potřebuji vymyslet, jak přesměrovat adresy nekončící .html na končící .html (www.nhopatovice.cz/novinky ->www.nhopatovice.cz/novinky.html)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: