#php #.htaccess #laravel
#php #.htaccess #laravel
Вопрос:
У меня есть файл codeigniter .htaccess, подобный
<ifModule mod_rewrite.c>
RewriteEngine on
# allow social media crawlers to work by redirecting them to a server-rendered static version on the page
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule eventApp/(d*)$ [P]
# Required to allow direct-linking of pages so they can be processed by Angular
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /eventApp/index.html [NC,L]
</ifModule>
Но я хотел бы удалить хэштег из laravel.
Ответ №1:
Чтобы удалить хэш из фрагмента URL, вам нужно всего лишь настроить angular так, чтобы он не добавлялся, не нужно изменять .htaccess
файлы. Таким образом, этот ответ предлагает более чистое решение представленной проблемы.
В вашем базовом модуле angular, обычно там, где вы определяете свои маршруты.
angular.module('app', [])
.config([
'$routeProvider',
'$locationProvider',
function($routeProvider, $locationProvider) {
// Hashtags no longer appear with this
$locationProvider.html5Mode(true);
// Route definitions below
}]);
Вам также нужно будет установить base
элемент заголовка в вашем HTML-представлении. Это используется angular для определения пути, который он должен использовать при создании URL-адресов. В этом примере будет использоваться root.
<!doctype html>
<head>
<title>Laravel</title>
<base href="/" />
</head>
Комментарии:
1. Нет ли другого способа указать базу для Angular? Использование этого тега нарушает обычные ссылки на фрагменты, например,
<a href="#bar">
на странице с URL путь/foo/
не переходит на/foo/#bar
.2. Да, это правильно, но если я смогу обновить свою страницу, на ней отобразится ошибка типа страница не найдена в laravel. поэтому я думаю, что нам нужно установить для него .htaccess. Так что это работает в CI так же, как и приведенные выше правила, я не устанавливаю его laravel. Пожалуйста, дайте нам знать об этом, если вы знаете.
3. Вы можете перехватывать маршруты в laravel, вам не нужны
.htaccess
модификации для этого.Route::any('{path?}', function() { return view("index"); })->where("path", ". ");
обратите внимание на where в конце маршрута, это будет соответствовать всем маршрутам, которые не определены, и вернет приложение angular.