.htaccess ? uložení bez přípony Vyřešeno

Problémy s internetovými stránkami, internetovým prohlížečem atpod.

Moderátor: Mods_senior

Puzzlehead
nováček
Příspěvky: 30
Registrován: listopad 09
Pohlaví: Muž
Stav:
Offline

.htaccess ? uložení bez přípony

Příspěvekod Puzzlehead » 19 led 2023 22:58

Ahoj,
potřeboval bych poradit jak nastavit .htaccess nebo co nastavit na webu, aby když kliknu na odkaz https://lolkovi.cz/pack_de , kde soubor pack_de je .gz balíček přímo v adresáři bez přípony .gz a mně se stáhne a doplní se přípona .gz automaticky. Já ho chci stahovat bez přípony.

Díky

Reklama
Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1347
Registrován: červen 13
Bydliště: Jedna Velká díra ve středu Evropy :D
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: .htaccess ? uložení bez přípony

Příspěvekod rhsCZ » 20 led 2023 01:04

Pokud má web podporu mod rewrite tak do
.htaccess přidáš

Kód: Vybrat vše

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} !^\/([a-zA-Z0-9]+)\.(xml|php|hmtl|shtml|phtml|txt|exe|zip|rar)$
RewriteRule ^([^.]+)$ https://%{SERVER_NAME}/download.php?file=$1

a vytvoříš download.php s

Kód: Vybrat vše

<?php

if (isset($_GET["file"])) {
  // Get parameters
  $file = urldecode($_GET["file"]); // Decode URL-encoded string

  /* Check if the file name includes illegal characters
   like "../" using the regular expression */
  if (preg_match('/^[^.][-a-z0-9_.]+[a-z]$/i', $file)) {
    $filepath = "./" . $file;

    // Process download
    if (file_exists($filepath)) {
      header('Content-Description: File Transfer');
      header('Content-Type: application/octet-stream');
      header('Content-Disposition: attachment; filename="' . basename($filepath).'.gz"');
      header('Expires: 0');
      header('Cache-Control: must-revalidate');
      header('Pragma: public');
      header('Content-Length: ' . filesize($filepath));
      flush(); // Flush system output buffer
      readfile($filepath);
      die();
    } else {
      http_response_code(404);
      die();
    }
  } else {
    die("Invalid file name!");
  }
}

?>

Kdyžtak si přidej koncovky (vypis těch který to nemá zpracovávat) v "(xml|php|hmtl|shtml|phtml|txt|exe|zip|rar)" kdyby jich bylo málo :D


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

Puzzlehead
nováček
Příspěvky: 30
Registrován: listopad 09
Pohlaví: Muž
Stav:
Offline

Re: .htaccess ? uložení bez přípony

Příspěvekod Puzzlehead » 20 led 2023 08:19

Děkuji. Tohle funguje.
Jen jsem ještě musel umazat gz, aby to uložilo bez koncovky, ale to jsme si možná jen nerozuměli.

Kód: Vybrat vše

 header('Content-Disposition: attachment; filename="' . basename($filepath).'"');


Teď ještě bojuji jak to nastvit abych mohl mít i v jiném adresáři. :-) Budu zkoušet, ale budu i rád za druhé nakopnutí.
Díky

Dodatečně přidáno po 4 hodinách 52 minutách 4 vteřinách:
Tak nakonec jsem to zvládl zadáním pevnou andresou, ale určitě by to šlo nějak i dynamicky podle složky ve které se nachází.

Kód: Vybrat vše

RewriteRule ^([^.]+)$ https://%{SERVER_NAME}/(doplněné složky)/download.php?file=$1


Díky

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1347
Registrován: červen 13
Bydliště: Jedna Velká díra ve středu Evropy :D
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: .htaccess ? uložení bez přípony  Vyřešeno

Příspěvekod rhsCZ » 20 led 2023 14:11

jde to jinak stačilo poupravit download.php (umí v podsložkách i v kořenovém adresáři) a nechat původní .htaccess

Kód: Vybrat vše

<?php

if (isset($_GET["file"])) {
  // Get parameters
  $file = urldecode($_GET["file"]); // Decode URL-encoded string

  /* Check if the file name includes illegal characters
   like "../" using the regular expression */
  if (preg_match('/^[^.][\/\\\-a-zA-Z0-9_.]+[a-zA-Z]$/i', $file)) {
    $filepath = "" . $file;

    // Process download
    if (file_exists($filepath)) {
      header('Content-Description: File Transfer');
      header('Content-Type: application/octet-stream');
      header('Content-Disposition: attachment; filename="' . basename($filepath).'"');
      header('Expires: 0');
      header('Cache-Control: must-revalidate');
      header('Pragma: public');
      header('Content-Length: ' . filesize($filepath));
      flush(); // Flush system output buffer
      readfile($filepath);
      die();
    } else {
      http_response_code(404);
      die();
    }
  } else {
    die("Invalid file name!");
  }
}

?>

Jinak prvně jsem tě asi špatně pochopil.


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ


Zpět na “Internet a internetové prohlížeče”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti