Autor | Zpráva | ||
---|---|---|---|
pavel456 Profil * |
#1 · Zasláno: 9. 10. 2012, 18:29:56
Pěkný den.
Něco jsem si o .htaccess přečetl, ale vůbec tomu nerozumím. Prosím o polopatické vysvětlení, co mám vlastně do tohodle souboru vložit, když chci tři věci: 1) aby se stránky zobrazovaly bez přípony (na všech stránkách mám příponu php) 2) aby stránka example.com/abc nebyla dosažitelná i na example.com/abc.php 3) aby se stránky zobrazovaly s úvodním www a aby byly všechny stránky bez www přesměrovány na verzi s www Omluvte mou neznalost, ale bude soubor .htaccess pracovat správně už na apachi nebo ho musím vložit až na server, kde mi hostujou stránky? |
||
Kajman Profil |
#2 · Zasláno: 9. 10. 2012, 21:30:57
|
||
pavel456 Profil * |
#3 · Zasláno: 11. 10. 2012, 18:18:46
Kajman:
Díky. Je nějaká možnost, jak to vyzkoušet na apachi? Když to hodim k ostatním souborům a aktualizuju prohlížeč, apachi mi nenačte stránky. A to ani potom, co .htaccess odstranim. |
||
Davex Profil |
#4 · Zasláno: 11. 10. 2012, 20:25:58
pavel456:
„apachi mi nenačte stránky“ Je v souboru error.log zaznamenána nějaká chyba? |
||
pavel456 Profil * |
#5 · Zasláno: 11. 10. 2012, 20:45:57
Davex:
Hromada, ta poslední je "[Thu Oct 11 20:40:03.416992 2012] [core:error] [pid 2844:tid 1680] (20023)The given path was above the root path: [client 127.0.0.1:54955] AH00127: Cannot map GET /C:/Program%20Files/xampp/htdocs/web/index HTTP/1.1 to file" Dokud jsem do složky "web" uloženou na C:/Program Files/xampp/htdocs nedal .htaccess, spouštěl jsem php stránky přes prohlížeč napsáním localhost/web/index.php Po vložení .htaccess (a odebrání) mi prohlížeč hlásí: "Přístup odmítnut! Nemáte právo pro přístup k požadovanému objektu. Buď je chráněn proti čtení, nebo není serverem čitelný. Pokud si myslíte, že toto je chyba serveru, kontaktujte, prosím, webmastera. Error 403 localhost Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 " |
||
Kajman Profil |
#6 · Zasláno: 11. 10. 2012, 21:28:33
Používáte u svých widnows UAC?
|
||
pavel456 Profil * |
#7 · Zasláno: 11. 10. 2012, 21:33:21
Kajman:
Patrně ne. Matně si vzpomínám, jak před instalací xamppu na mě vyskočilo okno říkající právě něco o UAC. Po dokončení instalace apache chodil, takže jsem tomu nevěnoval pozornost. |
||
Davex Profil |
#8 · Zasláno: 11. 10. 2012, 23:30:12
pavel456:
„Dokud jsem do složky "web" uloženou na C:/Program Files/xampp/htdocs nedal .htaccess, spouštěl jsem php stránky přes prohlížeč napsáním localhost/web/index.php“ V tom případě musíš upravit cíl přesměrování. RewriteRule ^(.+)\.php$ /web/$1 [L,R=301,NE] |
||
Časová prodleva: 23 dní
|
|||
pavel456 Profil * |
#9 · Zasláno: 3. 11. 2012, 16:51:06
Tak. Nefunguje to na apachi, ale co hůř - nefunguje to ani na webu. V .htaccess mám
RewriteEngine On # podstrčení PHP, přepsat pouze na existující skript RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^([^.]+)$ $1.php [L] # podstrčení HTML, přepsat pouze na existující soubor RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^([^.]+)$ $1.html [L] # přesměrování na verzi bez přípony, pokud ještě není přepsáno a není to POST požadavek RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ $1 [L,R=301,NE] RewriteCond %{REQUEST_METHOD} !=POST RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ([^.]+\.[^.]+)$ RewriteRule ^(.*) http://www.%1/$1 [R=301,QSA,L,NE] ale výstupem, například pro index.php je http://www.maweb.eu/home/users/hlavolammaweb/hlavolam.maweb.eu/web/index - čili mi to hodí 404 not found. Když už jsem u toho indexu... dříve jsem chtěl (mimo jiné) z www.example.com/index.php tvar www.example.com/index . Ale bylo by možné právě pro ten index dát jen www.example.com? Samosřejmě se zachováním všech vlastností zmíněných v předešlých příspěvcích.
|
||
Davex Profil |
Jak už jsem psal [#8], zkus přidat lomítko před cíl přesměrování.
RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ /$1 [L,R=301,NE] „Ale bylo by možné právě pro ten index dát jen w>ww.example.com?“ To by mělo fungovat automaticky, když zadáš do prohlížeče adresu bez indexu, tak se index.php nenačte? |
||
pavel456 Profil * |
#11 · Zasláno: 3. 11. 2012, 17:14:09
Davex:
Díky!!Ovšem prosím ještě poradit - furt to nefunguje podle představ - bez www verze nefunguje (to bude asi doménou třetího řádu) a právě ten index se zobrazí v řádku s URL. A já ho tam nechci - místo www.example.com/index bych radši měl www.example.com - pokud to jde.
|
||
Davex Profil |
pavel456:
Pokud chceš přesměrovat pouze na jednu verzi, tak musíš opět upravit cíl přesměrování: RewriteRule ^(.+)\.php$ http://www.subdomain.example.com/$1 [L,R=301,NE] Druhé přesměrovávací pravidlo nebude fungovat správně, protože není stavěno na přesměrování domény třetího řádu na doménu čtvrtého řádu. Tam se musi přidat další podvýraz, aby se našla další subdoména. RewriteCond %{REQUEST_METHOD} !=POST RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ([^.]+\.[^.]+\.[^.]+)$ RewriteRule ^(.*) http://www.%1/$1 [R=301,QSA,L,NE] Za jakých okolností se tam ten index objevuje? Když na něj nepovede žádný odkaz, tak se tam sám od sebe přece neobjeví. |
||
pavel456 Profil * |
#13 · Zasláno: 3. 11. 2012, 18:22:08
Davex:
Opět děkuji! No jo, jenže mě na index vede odkaz už jen z headeru, kterej je na každý stránce... Jestli to nejde udělat nějak jednoduše, tak to nechme plavat. Vždycky můžu dát za relativní odkaz absolutní (v domnění, že by to řešilo daný problém). Ale to asi dělat nebudu - za tu námahu to nestojí. Krom toho je to jen nepatrná vada na kráse. Ještě jednou díky. |
||
Davex Profil |
#14 · Zasláno: 3. 11. 2012, 18:39:21
Nejlepší bude nahradit odkazy na index.php za
<a href="/"> . Přesměrováním na serveru by to také šlo, ale vhodnější je opravit příčinu.
|
||
Časová prodleva: 11 let
|
0