Autor Zpráva
miropiro
Profil
Dobrý den, kolegyně si vymyslela, že by chtěla na stránce fermentor.net url podstránek ve stylu podle hlavního menu. Tím mám na mysli, že v hlavním menu nahoře bude odkaz na fermentor.net/applications, ovšem podmenu, které se zobrazuje po najetí myší na text Applications, by pak mělo odkazovat na fermentor.net/applications/fungal-culture

Já však mám v rámci souboru htacess definovaný kořenový adresář pro odkazy, ale přesto si říkám, lze nějak docílit, aby fungovaly odkazy (klidně i jen virtuálně) na podadresáře?
Keeehi
Profil
Melo by to jít. Jak vypadá váš htaccess?
+ jak pokud přidáte popis adresářové struktury, tak to bude ještě lepší.
miropiro
Profil
Melo by to jít. Jak vypadá váš htaccess?
Co nás zajímá, je tato část kódu

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteBase /

Jinak v rámci kořenového adresáře je pár složek, povětšinou složky s obrázky, pdfky a css věci.
Keeehi
Profil
Pokud tedy vytvoříš adresář applications a v něm soubor fungal-culture.php, mělo by to fungovat s aktuálním htaccess souborem.
miropiro
Profil
Keeehi: Což o to, tohle by fungovalo, ale pokud se nepletu, tak musím do toho adresáře nahrát i složky týkající se css souborů a tak? Nebo na ně odkazovat absolutní cestou přes url? Raději bych druhou možnost, ale nějak mi nejde tohle podchytit...


Vlastně i obrázky, footer soubor taky...to ale v praxi znamená, že pokud to nepůjde nějak relativní cestou kompletně provázat, tak pak budu mít třeba i tři podsložky se stejnými soubory, které budu muset vždy změnit...
Keeehi
Profil
Stačí přidat lomítko na začátek.
<link rel="stylesheet" type="text/css" href="/file.css">
Platí to i pro obrázky, odkazy a všelijaké další zdroje.
miropiro
Profil
Keeehi: To lomítko, no jo, to asi pomůže, problém je ovšem v tom, že já v tom souboru soubory head, header a footer.php "volám" přes php include

<?php include ("head.php") ?>

A ačkoliv obrázek to již bere, tak tyto soubory nikoliv přes lomítkovou variantu...


Poradil jsem si nakonec sám, koukal jsem do této diskuse a je třeba před head.php napsat ../

Pak už to tahá správně :-)
miropiro
Profil
Jinak ještě se pak hodilo, aby název souboru nebyl stejný jako název složky, měli jsme tam soubor features.php, tak jsem kolegyni upozornil, že nemohu dát složku features, protože jinak bude odkaz na features bez přípony "php" vést na ten adresář a bude to haprovat. Takže z mé strany vyřešeno a budu tak postupovat i u dalších webů, respektive stránek na tomto webu.
miropiro
Profil
Tak samozřejmě kolegyně by si přála, kdyby i stránka fermentor.net/features-minifor se jmenovala fermentor.net/features, jenže toto mi teď nepůjde, protože "features" je současně název podadresáře. Mohl bych sice linkovat na features.php, ale to pak nevypadá tak elegantně. Jak tedy přimět stránku k tomu, aby v kořenovém adresáři existoval soubor php se stejným názvem jak podadresář, který obsahuje další stránky? Děkuji moc...
Kajman
Profil
miropiro:
Pokud je problém v automatickém doplňování lomítka při skutečném adresáři, zkuste do .htaccess přidat

DirectorySlash Off
miropiro
Profil
Kajman: Tohle evidentně nestačí. Zkoušel jsem hledat návod, našel jsem si tento článek www.dasm.cz/clanek/neprustrelny-url-rewrite, ve kterém se na závěr uvádí kód

DirectorySlash Off
RewriteEngine On
RewriteOptions AllowNoSlash

RewriteCond $1 ^(css|img|js)/.+
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ - [L]

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Tento kód však přináší potíže, protože mi následně stránky začnou hlásit chybu:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Kajman
Profil
miropiro:
Internal Server Error

Tipnul bych, že Vaše verze apache nepodporuje RewriteOptions nebo se to zacyklí. Mrkněte do error logu.

A skripty tedy máte předělané, že již se nevolá interně features.php, ale pro všechny požadavky se volá index.php? Podstrkávání v [#11] a v [#3] je totiž zásadně jiné.
miropiro
Profil
No a nebude to náhodou (že se tak blbě ptám) tím, že web používá Apache/2.2.15 (Cloud Linux) Server? Ten návod, co jsem našel, je pro verzi Apache 2.4.
Kajman
Profil
Kdybyste ten návod četl, tak víte, že to není žádná náhoda a že AllowNoSlash je možnost RewriteOptions až od verze 2.4.0.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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