在角度前端和laravel后端中启用HTML5模式为true无法正常工作

时间:2017-05-28 10:21:57

标签: php angularjs html5 laravel .htaccess

我想从我的网站网址中删除"#!" 。而且我能够完美地设置它并且它正在工作。

问题是,当我转到家中的任何子URL并重新加载页面时,它会说找不到页面。但是当我点击主页上的链接时,我可以打开相同的子URL。

例如,

主页网址:http://abcxyz.com

子网址:: 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后端。所以请帮我正确设置我的.htaccess文件,因为我肯定在这里遗漏了一些东西。或者如果这个问题是由于其他原因,请告诉我。

2 个答案:

答案 0 :(得分:1)

如果您已创建虚拟主机,请在/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 :(得分:0)

我尝试在laravel中的web.php文件中再添加一个路径:

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

我知道我们可以通过htaccess实现这一目标。任何帮助将不胜感激。 但是,这个解决方案现在正在为我工​​作。