Ano, mělo by to fungovat, ale u mě na W7 to nechodí. Zkoušeno na verzích 2.4.29 a 2.4.37 (php 7.0 a 7.3). Ciboha. Na 2.2 to bylo myslím v pořádku.
U mne to funguje. Vytvořil jsem si na serveru adresář test, do něj hodil index.php:
<?php
echo "Hi there: ".$_GET['p'];
?>
A soubor .htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
http://server/test/abcd vypíše Hi there: abcd
Dále vytvořím soubor x.txt a do něj dám text Hello World!
Když zavolám
http://server/test/x.txt - vypíše Hello World!
Chlapi, co přesně v Apachi 2.4 znamená zápis
RewriteCond %{REQUEST_FILENAME} !-f
Vždycky jsem si myslel, že to znamená "pokud hledaný soubor neexistuje, pokračuj na RewriteRule". Proč ale teda tady existující obrázky/styly nevidím
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php [QSA,L]
a tady je vidím?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|css|js)$ - [L]
RewriteRule ^/(.*)$ /index.php [QSA,L]
Ten třetí řádek přece nic nepřepisuje ...
Docela problém může být, pokud používáš nějaké knihovny a chceš je povýšit.
Ale není zas tak velký problém mít na jednom serveru PHP5.6 i PHP 7.x - serverhostingy to běžně nabízejí.
Jako zaklad se da vzit tohle:
Migrating from PHP 5.6.x to PHP 7.0.x. Z tech webu co jsem delal nejcasteji clovek samozrejme narazi na absenci mysql a mssql extension.
Dal tam jsou zmeny v nekterych sifrovacich funkcich (nejsou podporovany nektere starsi sifrovaci metody - ale to bylo tusim uz u prechodu 5.4 na 5.6), zmena salt u password_hash()...
Pokud chces mit malo pri prace tak je nejjednodussi si udelat soubor s nahradou mysql_* funkci a ten naincludovat do webu. Pokud to chces udelat ciste tak prochazet skripty a najdi a nahrad mysql_* za mysqli_* (+ doplneni identifikatoru spojeni k databazi)
zachovám vlákno:
https://github.com/mattbit/mysql-compat5 -> 7 na projektu, kde jsem to řešil, bez problémů, pár drobných úprav, jako názvy konstruktorů
Zkušenosti z migrace php 5 -> 7 by mě docela zajímaly. Taky máme letité aplikace. Ocenil bych nějaký report třeba v klubu php.
To se tezko odhaduje bez blizsich informaci. Pokud chce nejake php skripty modernizovat tak muzes jit na php 5.6 nebo 7.x. Problem je ze 5.6 je uz mrtva vec a kdyz ho nasadis tak jsi v temer stejne situaci. Pokud ty skripty chces predelat na php 7.x tak budes muset pravdepodobne resit absenci puvodniho mysql a jeho nahradu za mysqli (jednodussi cesta) nebo PDO. A je otazka jestli tam nemas jeste nejakou jinou specialitku (treba ze skripty koukaji do nejake MSSQL databaze), nebo netrvaji na nejake historicke konfiguraci php, ktera uz neni dostupna.
Par webu jsem uz takhle predelaval a pokud autor nebyl prase tak se to da delat docela rychle. Posli pripadne vzkaz pokud budes chtit nejake blizsi info
dodám, že nejmenovaná identita se do toho už pustila za cenu v jednotkách tisíc Kč, ale teď mi nezvedá telefon a neodpovída na maily. Nicméně ten polotovar lze použít.
Doufám, že tu nebudu příliš offtopic. Máme letitý web server s pravěkým php, cca 15-20 virtual hosts a potřeboval bych to přiblížit do současnosti. Tedy se zachováním původní funkcionality vytvořit kopletní web (Linux+Apache+PHP), který nebude plný pět let známých zranitelností.
Může někdo odhadnout, kolik by taková legrace mohla řádově stát?
Slo by to obejit pomoci presmerovani tech https domen. treba takto (ignoruj zavorky):
(VirtualHost *:443)
ServerName domena-bez-https.cz
ServerAlias www.domena-bez-https.cz
Redirect / http://www.default-domena.cz/
(/VirtualHost)
Já bych preferoval, kdyby to šlo bez certifikátu, ale místo "Varování: možné riziko nebezpečí" by se zobrazilo 404 "odpal, tahle doména na https nejede".
Jenže když certifikát odeberu, Apache nestartuje.
to co pozadujes nejde, protoze FQDN v certifikatu musi odpovidat FQDN v URL, pripadne muzes pouzit wildcard certifikat a pak staci kdyz sedi domena. nicmene od doby co mame SNI a SAN, tak lze vystavit certifikat, ktery ma v SAN vsechny potrebna jmena (bezne se dneska pouziva na sluzbach, ktere nabizi nejaky publikacni system pod vlastni domenou uzivatele).
na vygenerovani certifikatu bych asi doporucil pouzit letsencrypt tools, protoze pokud si budes chtit zaridit certifikat pro vic domen, bude to stat dost penez.
Když to čtu podrobněji, tak ty spíš chceš certifikát pro více domén, což tak není problém.
https://www.cloudways.com/blog/lets-encrypt-ssl-certificate-on-multiple-domains/Chtít certifikát, u kterého není třeba určovat pro jaké domény je moc smysl nemá, protože certifikát nejen zajišťuje šifrování, ale i identifikaci pravosti konkrétního serveru.
Podle mě je k tomu třeba SSL certifikát určený pro ip adresu a ne pro doménu.
Jak se správně konfiguruje default virtualhost pro SSL?
Chtěl bych, aby se pro libovolnou doménu, nasměrovanou na můj server, která nemá svůj certifikát zobrazila korektně běžná default stránka bez nutnosti použít certifikát pro jinou.
Jestli teda dává ten dotaz smysl :)
musi byt na tom stroji, kde k nemu mas privatni klic. cili je na tobe, kde vsude to nakopirujes a nakonfigurujes.
muze byt na ruznych mistech