Vue-router на apache, SPA в подкаталоге, может обращаться к страницам только путем перенаправления - PullRequest
0 голосов
/ 31 августа 2018

Итак, у меня есть приложение Vue для клиента, настроенное на сервере Apache Dev. Я делаю это, чтобы соответствовать производственной среде. Приложение находится в подкаталоге, и я установил опцию 'base' на vue-router, чтобы она соответствовала. Если я перехожу к корневому каталогу моего виртуального хоста, он перенаправляется должным образом, однако при переходе на тот же адрес путем ввода адреса выдается 404.

Вот мой код роутера:

const routes = [
  {path: '/', redirect: '/london' },
  {path: '/:city', component: homeView}
]

const router = new VueRouter ({
  mode: 'history',
  routes,
  base: '/subdir/'
})

У меня также есть соответствующий Apaache .htaccess в 'subdir':

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.html$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.html [L]
</IfModule>

Так что, если я перехожу к "cityapp.local / subdir", он перенаправляется на "cityapp.local / subdir / london", но если я набираю "cityapp.local / subdir / london", я получаю страницу apache 404.

Любые мысли или помощь будут оценены!

РЕДАКТИРОВАТЬ: Если я установил свой виртуальный хост для включения subdir и удалил опцию base из маршрутизатора, все работает нормально. Тем не менее, я не могу сделать это на производстве, поэтому я надеюсь, что эта информация немного поможет.

1 Ответ

0 голосов
/ 31 августа 2018

Боже, вчера и сегодня мы долго искали решение этой проблемы и только что нашли ответ: Справочный форум Vue: изменение пути проекта Vue webpack

Соответствующий код для всех, кто может найти это:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subdirectoryName
RewriteRule ^subdirectoryName/index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdirectoryName/index.html [L]
</IfModule>

Честно говоря, вчера попробовал нечто подобное. Я изменил RewriteBase на subdir, но не на правила перезаписи! Я плохо разбираюсь в вещах .htaccesss: (

...