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 |
#2 · Zasláno: 7. 5. 2015, 21:26:31
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 |
#3 · Zasláno: 7. 5. 2015, 21:34:49
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 |
#5 · Zasláno: 7. 5. 2015, 22:30:53
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 |
#6 · Zasláno: 7. 5. 2015, 22:46:54
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 |
#7 · Zasláno: 7. 5. 2015, 22:53:21
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 |
#8 · Zasláno: 8. 5. 2015, 05:43:30
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 |
#9 · Zasláno: 8. 5. 2015, 09:02:23
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 |
#10 · Zasláno: 8. 5. 2015, 09:41:24
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] |
||
sjiamnocna Profil |
#11 · Zasláno: 8. 5. 2015, 13:21:30
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 |
#14 · Zasláno: 8. 5. 2015, 16:32:11
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 |
#16 · Zasláno: 9. 5. 2015, 13:30:23
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. |
||
Časová prodleva: 10 let
|
0