Autor Zpráva
Benys
Profil *
Zdravím,

mám problém s nastavením .htaccessu. Na serveru mám dva, jeden v rootu a jeden ve slozce /www kde se nachází i celý web. V tom prvním je zapsáno pravidlo že pokud uživatel zadá domena.cz tak ho to presmeruje na www.domena.cz a v tom druhém je myslím pouze RewriteBase / (je to klasický drupalovský htaccess). Když uživatel zadá www.domena.cz tak je všechno ok ale pokud uživatel zada domena.cz tak ho to přesměruje na www.domena.cz/_ . Nevíte někdo co by to mohlo dělat? Díky za každou radu...
Davex
Profil
Mám to chápat tak, že se z varianty bez www přesměruje na variantu s www a za lomítko se doplní nechtěné potržítko? Jaký je obsah těch .htaccess souborů (bez řádků zakomentovaných pomocí #)?
Benys
Profil *
Davex:
Přesně tak.

Obsah prvního htaccessu (toho v rootu) je:
RewriteEngine on

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


A ten druhý ve složce /www (htaccess který je primárně v cms drupal, je tam pouze navíc nastaven RewriteBase /):

<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
  Order allow,deny
</FilesMatch>

Options -Indexes

Options +FollowSymLinks

ErrorDocument 404 /index.php


<Files favicon.ico>
  ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>

DirectoryIndex index.php

<IfModule mod_php4.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

<IfModule sapi_apache2.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive On

  ExpiresDefault A1209600

  <FilesMatch \.php$>
    ExpiresActive Off
  </FilesMatch>
</IfModule>


<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteBase /


  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>



Moderátor Kajman: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Davex
Profil
Benys:
První soubor .htaccess z rootu smaž a poslední dva řádky z něho zkopíruj do druhého souboru .htaccess ve složce /www hned za RewriteBase /. Mělo by to šlapat.
Benys
Profil *
Davex:
To už sem zkoušel ale bohužel když smažu ten první htaccess tak to hází 404 - Not Found...
Davex
Profil
No jo, to znamená, že první .htaccess slouží pouze doméně bez www. Co se stane, když se pravidla trochu upraví a napevno zadá jméno tvé domény?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domena\.cz$ [NC]
RewriteRule ^(.*)$ http://www.domena.cz/$1 [R=301,L]
Benys
Profil *
Davex:
To už sem taky zkoušel, dělá to úplně to samý...
Davex
Profil
Předpokládám, že když se vymaže (nebo přejmenuje) ten druhý .htaccess, tak to dělá to samé. Pro zjištění příčiny by se musel zapnout a analyzovat rewrite log. Pokud je to na hostingu, tak doporučuji kontaktovat technickou podporu.
Kajman_
Profil *
Navíc bych se mrknul na http hlavičky, zda tam není ještě jedno přesměrování navíc, které to podtržítko přidává. Trošku pochybuji, že ho přidávají zmíněná pravidla.

A v prvním požadavku to podržítko není?

A změní se něco, když se upraví přesměrování třeba na

RewriteCond %{HTTP_HOST} !.+\..+\..+ [NC]
RewriteRule (.*) http://www.%{HTTP_HOST}/Benys [R=301,QSA,L]
Benys
Profil *
Kajman:
Když upravím přesměrování podle tebe tak to přesměruje na www.domena.cz/Bernys. Takže když sem tam dal
RewriteCond %{HTTP_HOST} !.+\..+\..+ [NC]
RewriteRule (.*) http://www.%{HTTP_HOST}/[R=301,QSA,L]


tak to přesměrovalo správně na www.domena.cz, potíž je v tom že to tak presmeruje úplně všechno bez www.
lukas7
Profil
Měl jsem stejný problém, když jsem soubor upravil tak jak psla Davex problem se vyřešil.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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