You could run a storviewe in a subdirectory and it depends on your server (NGINX or apache) how you can configure this.
Follow the following instructions:
Disable Store Code in URL
This Configuration setting has to be disabled to be able to use subdirectories.
Stores > Settings > Configuration > General > Web > Url Options > Add Store Code to URLS
Configure Base URL
Foreach Base URL you have to add the subfolder at the end
For example
Global: http://example.com/
Dutch storeview: http://example.com/nl/
French storeview: http://example.com/fr/
Create Subfolders
Create a Subfolder for each different storeview, for which you configured the new base url, in the pub folder. This is because all request for each storeview will go through this folder.
Example:
mkdir ~/[pathToMagentoRoot]/pub/nl
mkdir ~/[pathToMagentoRoot]/pub/fr
Create Symlinks in the subfolder to the media, static, opt and errors folders. This is necessary to correctly load the media and theme files.
For example:
cd ~/[pathToMagentoRoot]/pub/fr ln -s ../media media
ln -s ../static static
ln -s ../opt opt
ln -s ../errors errors
Copy the index.php and .htaccess
Now you only have to copy the index.php and .htaccess from the pub folder and edit these according to the entry points.
For example:
In the index.php change the following sentence:
require realpath(DIR) . ‘/../app/bootstrap.php’;
to
require realpath(DIR) . ‘/../../app/bootstrap.php’;
Then edit .htaccess (only when you are running on an apache server). In this example there is only an explanation for nginx.
Nginx rewrite for each Storeview
Add the following block to your nginx configuration for each storeview:
location /[storeviewfolder]/ {
index index.php index.html index.htm;
try_files $uri $uri/
/[storeviewfolder]/index.php?$args;
}