Autor Zpráva
sjiamnocna
Profil
Ahoj,
vytvořil jsem testovací apache server a přesměroval jsem z hosts doménu na můj domácí prostor. Bohužel, když se snažím přepisovat různé domény do různých podsložek, nejde mi to vůbec. Vždycky se mi jen vypíše obsah rootu /var/www - tedy phpinfo, které jsem tam dal.

Chtěl bych při zadání adresy (www.)abc.cz zobrazit obsah složky /abc.cz, (www.)bca.cz /bca.cz a (www.)cab.cz /cab.cz

mám tento htaccess:
RewriteEngine On

RewriteCond %{REQUEST_URI} !^
RewriteCond %{REQUEST_URI} !^/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/%2 -d
RewriteRule (.*) %2/$1 [DPI]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^[^/]+/(.+[^/])$ /$1/ [R]

DirectoryIndex index.php index.html index.htm

Mohl by mi někdo poradit, popř. vysvětlit, co který řádek (ne)dělá (kód jsem našel na netu) ? Děkuji
sjiamnocna
Profil
Prosím vás o radu...
už se mi podařilo víceméně pochopit, co by co mělo dělat (podmínka Cond, regulární výraz, %{}=proměnné $_SERVER z PHP..), bohužel, nedaří se mi to rozchodit. Zkusil jsem už mnoho kódů, nalezených na webu, poupravoval ap., nic:
RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.+)\.{1,3}$
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/%{HTTP_HOST}/$1 [L]
Marschmallow
Profil
sjiamnocna:
Před chvílí jsem to psal v tomto vlákně: soubor .htaccess a přesměrování do subadresáře.
sjiamnocna
Profil
Vyzkoušel jsem, přesměruje, bohužel potřeboval bych to nějak zrušit z té adresy (mám tam teď adresa.cz/adresa.cz), viz zkrácení na jeden řádek (podmínky prozatím neřeším, je to jen local):

RewriteRule (.*) /%{HTTP_HOST}/$1 [L]
Marschmallow
Profil
sjiamnocna:
Předpokládám správně, že máš na localhostu nějaký redakční systém? Mně tohle chování vykazovala například Joomla, odvodila si root serveru (hostingu - domovský adresář) a od toho se odvíjely všechny URL adresy. Doporučuji upravit cestu v konfiguračním souboru toho RS.
sjiamnocna
Profil
Ten tam ještě není, zatím tam mám php index, který vypíše url a adresář ze kterého sosá... Ta adresa se přesměrovává čistě z apache

Fakt nevím... nemůžu mít někde chybu v konfiguracci apache nebo modulů (ikdyž to by asi nahodilo 505..)
Marschmallow
Profil
sjiamnocna:
mám php index, který vypíše url a adresář ze kterého sosá
Je logické, že PHP skript vypíše svoji fyzickou cestu, takže localhost/abc.cz. Mod_rewrite se totiž stará pouze o virtuální přepsání adresáře, takže po zadání localhost se Ti vlastně zobrazí obsah localhost/abc.cz, protože ve složce abc.cz jsou ty soubory uložené. Leda prostě nezjišťovat aktuální URL, ale natvrdo ji vložil do proměnné (jestli Ti jde o tohle).
Keeehi
Profil
Pokud přesměruješ, tak se adresa v adresním řádku objeví. Musíš to jen podstrkávat. To znamená že tam nemá být flag R a nesmíš použít jako cíl adresu uačínající http(s).
sjiamnocna
Profil
Mám localhost v adresáři /var/www, v něm mám složky abc.cz/, bca.cz/ a cba.cz/. V každé mám index.php, který obsahuje toto:

echo $_SERVER['HTTP_HOST'].'<br/><br/>'.__FILE__;

což má testovací účely (vypíše doménu a adresář na serveru)


Kód nahoře je část zkopírovaná z HTACCESS, který lidem dává WEDOS pro použití hostingu s aliasy (tedy se smazáním pravidel pro subdomény, což nepotřebuju). Bohužel, až na poslední řádek, který má za úkol přesměrovat www.abc.cz na www.abc.cz/ (tedy s lomítkem na konci) mi z toho nic nefunguje
Marschmallow
Profil
sjiamnocna:
Zkus celý ten Tvůj .htaccess ve složce /var/www vymazat a vložit tam jen toto:
RewriteCond %{HTTP_HOST} ^localhost$
RewriteCond %{REQUEST_URI} !^/abc.cz/
RewriteRule (.*) /abc.cz/$1 [L]
Nyní by se nemělo nic přesměrovávat. Po zadání localhost do prohlížeče by se Ti měl zobrazit adresář /var/www/abc.cz, ale adresní řádek by měl stále ukazovat localhost.
sjiamnocna
Profil
Toto mi fungovalo - otevřelo to všude soubory adresáře /abc.cz/, bohužel nejde mi to zařídit podle proměnných (tedy aby se mi načetly složky www.abc.cz ap. podle zadání URL


Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$

RewriteRule (.*) /$2/$1 [L]
Marschmallow
Profil
sjiamnocna:
Založ si v kategorii PHP nové vlákno a ukaž nám, s čím máš problém. Je přeci hloupost, abys tento zápis nepoužíval (když Ti funguje dobře) jenom proto, že Ti špatně fungují skripty.
sjiamnocna
Profil
Ne, pardon, já jsem nazval proměnnými ty serverové informace v .htaccessu (%{})

Chtěl bych to mít dynamicky pro více domén tj. podle adresy vybere složku - nejlépe abych tam nemusel pro každou doménu vypisovat Rewrite, jenže nejsem schopen to rozchodit
Davex
Profil
sjiamnocna:
Nehodilo by se ti náhodou to, co bylo tady: Htaccess a různé domény?

Já osobně bych to nedával do souboru .htaccess, ale přímo do konfigurace Apache do definice <VirtualHost *> společné pro všechny domény.
sjiamnocna
Profil
Nasadil jsem jedinou funkční možnost, a to nastavení do htaccessu každé domény, bohužel jsem zjistil, že Wordpress si z nějakého nepřekonatelného důvodu stejně tu podsložku do adres nastrčí, takže jsem se rozhodl řešit to jen jednou doménou, na které budu zkoušet vše a aliasy budu řešit, až to bude aktuální na hostingu (vzhledem k tomu, že na počítači mi nejede nic, co normálně na WH jede). Děkuji všem za ochotu a rady :)
Marschmallow
Profil
sjiamnocna:
Tenhle dynamicky generovaný Rewrite používám já:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI] 

Domény jsou ve složce domains.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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