web-dev-qa-db-fra.com

Réécrivez toutes les URL du sous-répertoire dans index.html afin que JavaScript puisse utiliser le chemin.

J'ai une partie du domaine example.com/~mypart. Dans ce dossier se trouve index.html. Si je visite example.com/~mypart/something j'obtiens une erreur "Not Found".

Je veux que chaque adresse avec une chaîne après example.com/~mypart/ soit réécrite sur example.com/~mypart (index.html) et conserve la chaîne afin que je puisse utiliser JavaScript dans index.html pour obtenir cette chaîne.

4
Reenergy

Ceci est un motif standard de contrôleur frontal . Vous pouvez utiliser la directive FallbackResource de mod_dir dans le fichier .htaccess dans /~mypart/.htaccess. Par exemple:

FallbackResource /~mypart/index.html

(Si /~mypart est un répertoire Web Apache par utilisateur , utilisez simplement /index.html.)

De nombreux exemples utiliseront mod_rewrite, mais à moins que vous n'ayez des exigences de réécriture d'URL plus complexes, les opérations ci-dessus sont suffisantes (et recommandées).

Référence:
https://httpd.Apache.org/docs/2.4/mod/mod_dir.html#fallbackresource

2
MrWhite

Ajoutez les éléments suivants à votre fichier httaccess:

    # if folder does not exist
    RewriteCond %{REQUEST_FILENAME} !-d
    # if file does not exist
    RewriteCond %{REQUEST_FILENAME} !-f
    # redirect anything to
    RewriteRule ^(.*)$ ~mypart/$1 [L]

crédit où est dû

Et après cela, une fois la page chargée, vous pouvez utiliser le code javascript suivant pour obtenir le fichier demandé.

    var requestedResource = window.location.href.replace('example.com/~mypart/','');