Diskuse

Téma: Wedos - htaccess nefachá

Ahoj.

S tímhle bych fakt potřeboval pomoct, za odměnu v rozumné výši za vyřešení. (Wedos .htaccess preferuji, aby zůstal netknutý. Oni ho generují a hrozilo by mu přepsání.)

Hele, na Wedosu ty nice URL moc nefungují. Nevylučuji, že dělám něco špatně. Jde o fresh install, jen pár vzorových sekcí. Když se připojíš na web https://verabarbera.cz/ , odkazy fungují ok.

URL https://verabarbera.cz/admin/ i https://www.verabarbera.cz/admin/ jsou ok, zobrazí přihlášení. Zadáš heslo, objeví se znovu, stále dokola, bez jakékoliv chybové hlášky, administrace neběží, můžeš se jen dokola přihlašovat.

Otevřeš https://www.verabarbera.cz/domains/verabarbera.cz/admin/ a tam to běží ok. Přihlásíš se. Odkazy to generuje ve formátu https://www.verabarbera.cz/domains/verabarbera.cz/admin/index.php?p=content a na nich administrace normálně běží.

Mám na stejném hostingu ještě jednu Sunlight Verze: 7.5.5 (rev.0) a tu se mi kdysi podařilo rozchodit, .htaccess na konci příspěvku. Ale už nevím, jestli jsem tam nějak neohackoval __DIR__ někde. Jsou to už roky. Každopádně na 8x verzi tohle nezabralo.


Konfigurace:

Wedos webroot dir je "/www/domains/verabarbera.cz/" fyzicky v "/data/web/virtuals/4600/virtual/www/domains/verabarbera.cz"

V adresáři www je .htaccess od Wedos, kvůli rozhození na domains a subdomains adresáře, s obsahem

# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)

# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: https://kb.wedos.com/cs/webhosting/htaccess/htaccess-na-webhostingu

RewriteEngine On

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

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R][/i]

V rootu Sunlight je .htaccess

DirectoryIndex index.php

<IfModule mod_rewrite.c>
RewriteEngine On

# redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# determine RewriteBase and set it into env
RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
RewriteRule .* - [E=BASE:%1]

# direct requests to index.php unless it's a file or a dir
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

# deny access to composer and hidden files
<FilesMatch "^composer\.(json|lock)$|^\.">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</FilesMatch>[/i]

Funkční Sunlight 7 má .htaccess

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST} [L,R=301]

# hlavni pravidlo /seo-titulek
RewriteCond %{REQUEST_URI} ^/domains/itispm.cz/([0-9a-zA-Z\.\-_/]+)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php?_rwp=%1 [L,QSA]
postZaslat odpověď
Pokud na wedosu máš ten web v tom adresáři domains, nebo subdomény v adresáři subdom, systém tam špatně detekuje základní URL webu. Mně na wedosu pomáhá jen to, že mu to specifikuju v configu. Do array v souboru config.php si přidej následující řádek:

'base_url' => 'https://www.nazev-webu.cz'
nazev-webu.cz si samozřejmě přepiš na svou adresu, stejně tak si uprav, jestli primárně používáš s www nebo bez. Na konci však nesmí být lomítko.

Mně tohle většinou stačí a jinak na htaccess šahat nemusím...

Mohlo by to teoreticky vyřešit i tvoje další problémy, co jsi sem napostoval, uvidíš :-)

Edit: Ještě mě napadlo, že jestli si neplatíš multihosting, tedy že na jednom hostingu provozuješ více webů, není nutný mít web ani ve složce domains. Můžeš ho hodit přímo do adresáře "www" vedle složek domains a subdom a tohle nemusíš pak vůbec řešit. Ale to záleží, jak to máš, případně jaký máš plány do budoucna :-) Pokud bys o multihostingu přemýšlel, je lepší to mít od začátku v domains.
Na Wedosu to u jednoho projektu to mám nastavené takto...
- defaultní systémový .htaccess
- v config.php nastaveno base_url na domenu

img

a Wedosácký .htaccess
# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)

# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: https://kb.wedos.com/cs/webhosting/htaccess/htaccess-na-webhostingu

RewriteEngine On

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

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
Ahoj Jirko a Pitvo. Díky za radu.

base_url pomohlo na funkcnost adminu

Pitvo, navrhuju, že pošlu 500 jako podporu vývoje CMS.

Řešení ale nijak nepomohlo s nefukčností pluginů, co jsem posílal v jiném threadu zde. Je jich docela dost.
Já ti v podpoře systému určitě bránit nebudu, takže pokud chceš, můžeš tady:

img