【问题标题】:How to ignore sitemap url from Laravel routing?如何忽略 Laravel 路由中的站点地图 url?
【发布时间】:2017-09-08 15:49:11
【问题描述】:
我在http://example.com的根目录下有sitemap.xml
当我尝试访问http://example.com/sitemap.xml 时。它显然会抛出找不到路由的错误。
所以尝试这个改变.htaccess看起来像:
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sitemap.xml
RewriteRule ^ index.php [L]
使用的 Laravel 版本:5.1。
但是,没有运气。我如何才能使用和渲染手动生成的 XML 文件,而不是从路由中提供服务?我不是在这里寻找复杂的 XML 解析理论。只是尝试一个钩子来逃避特定的路由。
【问题讨论】:
标签:
php
xml
laravel
.htaccess
routing
【解决方案2】:
您可以创建一个返回动态生成的站点地图的路线。您不一定需要返回文件。
例如:
您的路线:
Route::get('sitemap.xml', 'App\\Controllers\\SiteMapController@index');
您的站点地图控制器:
public function index()
{
$urls = Logic::getMyUrlsToMap();
return view('site.home.sitemap', compact('urls'));
}
Logic::getMyUrlsToMap() 是您搜索将被映射的 url 的逻辑。
您的 site.home.sitemap 视图:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@if($urls)
@foreach($urls as $url)
<url>
<loc>{{$url}}</loc>
</url>
@endforeach
@endif
</urlset>