Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在有角度的前端和laravel后端中启用HTML5模式是不正常的_Php_Angularjs_Html_Laravel_.htaccess - Fatal编程技术网

Php 在有角度的前端和laravel后端中启用HTML5模式是不正常的

Php 在有角度的前端和laravel后端中启用HTML5模式是不正常的,php,angularjs,html,laravel,.htaccess,Php,Angularjs,Html,Laravel,.htaccess,我想从我的网站URL中删除“#!”。我能够完美地设置它,并且它工作正常 问题是,当我转到除主页外的任何子URL并重新加载页面时,它会说找不到页面。但当我点击主页上的链接时,我可以打开相同的子URL 比如说, 主页URL: 子URL:: 我已通过以下方式在angular应用程序中设置HTML 5模式: 1) 启用HTML 5模式: $locationProvider.html5Mode(true); $locationProvider.hashPrefix(''); 2) 设置基本标记 在ind

我想从我的网站URL中删除“#!”。我能够完美地设置它,并且它工作正常

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

比如说,

主页URL:

子URL::

我已通过以下方式在angular应用程序中设置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>

选项-多视图
重新启动发动机
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
RewriteCond%{DOCUMENT_ROOT}%{REQUEST_URI}-f[或]
重写cond%{DOCUMENT\u ROOT}%{REQUEST\u URI}-d
重写规则^-[L]
重写规则^index.php
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]

此外,我使用的是Laravel后端。因此,请帮助我正确设置.htaccess文件,因为我肯定遗漏了一些东西。或者,如果此问题是由于其他原因造成的,请务必让我知道。

如果您已经创建了虚拟主机,请在/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>

ServerName域名.com
DocumentRoot/var/www/html/docroot/dist/
重新启动发动机
RewriteCond%{REQUEST_FILENAME}-s[或]
RewriteCond%{REQUEST_FILENAME}-l[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^.*$-[NC,L]
重写规则^(.*)/index.html[NC,L]
否则,请在.htaccess文件中使用这些重定向。
这应该可以解决您的未找到子URL页面的问题。

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

Route::any('{any}',function(){
    return view('index');
})->where('any','.*');
我知道我们可以通过htaccess实现这一点。任何帮助都将不胜感激。
不过,这个解决方案目前对我有效。

谢谢,@Omkar,但是这些重定向对我无效。我有一个角度前端与拉威尔后端。只有当每个URL被重定向到主页时,角度路由才会生效