diff --git a/front/dist/.htaccess b/front/dist/.htaccess new file mode 100644 index 00000000..eb3c6a48 --- /dev/null +++ b/front/dist/.htaccess @@ -0,0 +1,23 @@ +DirectoryIndex index.html + +# By default, Apache does not evaluate symbolic links if you did not enable this +# feature in your server configuration. Uncomment the following line if you +# install assets as symlinks or if you experience problems related to symlinks +# when compiling LESS/Sass/CoffeScript assets. +# Options FollowSymlinks + +# Disabling MultiViews prevents unwanted negotiation, e.g. "/index" should not resolve +# to the front controller "/index.php" but be rewritten to "/index.php/index". + + Options -MultiViews + + +RewriteEngine On + +RewriteBase / + +# If the requested filename exists, simply serve it. +# We only want to let Apache serve files and not directories. +# Rewrite all other queries starting with _ to index.ts. +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule "^_/" "/index.ts" [L] diff --git a/front/dist/index.html b/front/dist/index.html index 85aced1e..51d52705 100644 --- a/front/dist/index.html +++ b/front/dist/index.html @@ -5,6 +5,7 @@ + Document diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index bc6b746e..d00ad604 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -151,6 +151,15 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface, Creat context.strokeStyle = '#ffffff'; context.stroke(); this.circleTexture.refresh(); + + // Let's alter browser history + let url = new URL(this.MapUrlFile); + let path = '/_/'+url.host+url.pathname; + if (url.hash) { + // FIXME: entry should be dictated by a property passed to init() + path += '#'+url.hash; + } + window.history.pushState({}, null, path); } private getExitSceneUrl(layer: ITiledMapLayer): string|undefined { diff --git a/front/webpack.config.js b/front/webpack.config.js index ff164804..d1bccd6f 100644 --- a/front/webpack.config.js +++ b/front/webpack.config.js @@ -8,6 +8,12 @@ module.exports = { contentBase: './dist', host: '0.0.0.0', disableHostCheck: true, + historyApiFallback: { + rewrites: [ + { from: /^_\/.*$/, to: '/index.html' } + ], + disableDotRule: true + }, }, module: { rules: [ @@ -24,6 +30,7 @@ module.exports = { output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist'), + publicPath: '/' }, plugins: [ new webpack.ProvidePlugin({