Я хотел удалить "#!" из URL моего сайта. И я смог настроить его отлично, и он работает.

Проблема в том, что, когда я перехожу на любой дополнительный URL-адрес, кроме домашней, и перезагружаю страницу, она говорит, что страница не найдена. Но я могу открыть тот же суб URL, когда нажимаю на ссылку на домашней странице.

Например,

URL домашней страницы: http://abcxyz.com

Sub URL :: http://abcxyz.com/qaz

Я настроил режим HTML 5 в своем угловом приложении следующим образом:

1) Включение режима HTML 5:

$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('');

2) Установка базового тега

В файле index.blade.php и в теге head я устанавливаю:

<base href="/" />

3) Настройка htaccess

Я снова попытался настроить свой файл .htaccess следующим образом:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    RewriteRule ^ - [L]
    RewriteRule ^ index.php

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Также я использую Laravel Back-end. Поэтому, пожалуйста, помогите мне правильно настроить мой файл .htaccess, так как я определенно что-то здесь упускаю. Или, если проблема связана с чем-то другим, пожалуйста, дайте мне знать.

0
Gaurav Roy 28 Май 2017 в 13:21

2 ответа

Лучший ответ

Если вы создали виртуальный хост, используйте следующую команду в /etc/apache/sites-available/000-default.conf

<VirtualHost *:80>
    ServerName domainname.com
    DocumentRoot /var/www/html/docroot/dist/
     <Directory /var/www/html/docroot/dist/>
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^(.*) /index.html [NC,L]
        </Directory>
</VirtualHost>

В противном случае используйте эти перенаправления в вашем файле .htaccess. Это должно решить вашу страницу субурла не найдена .

1
Omkar Porje 28 Май 2017 в 14:44

Я попытался добавить еще один маршрут в мой файл web.php в laravel:

Route::any('{any}',function(){
    return view('index');
})->where('any','.*');

Я знаю, что мы можем достичь этого через htaccess. Любая помощь будет оценена. Тем не менее, это решение работает для меня на данный момент.

0
Gaurav Roy 28 Май 2017 в 15:23