Php 在有角度的前端和laravel后端中启用HTML5模式是不正常的
我想从我的网站URL中删除“#!”。我能够完美地设置它,并且它工作正常 问题是,当我转到除主页外的任何子URL并重新加载页面时,它会说找不到页面。但当我点击主页上的链接时,我可以打开相同的子URL 比如说, 主页URL: 子URL:: 我已通过以下方式在angular应用程序中设置HTML 5模式: 1) 启用HTML 5模式: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
$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被重定向到主页时,角度路由才会生效