我想从我的网站网址中删除"#!" 。而且我能够完美地设置它并且它正在工作。
问题是,当我转到家中的任何子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文件,因为我肯定在这里遗漏了一些东西。或者如果这个问题是由于其他原因,请告诉我。
答案 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实现这一目标。任何帮助将不胜感激。 但是,这个解决方案现在正在为我工作。