【问题标题】: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


    【解决方案1】:

    最好的方法是将sitemap.xml 文件移动到public 目录。您甚至不必担心路由。

    然后它会自动被http://example.com/sitemap.xml访问

    【讨论】:

      【解决方案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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        相关资源
        最近更新 更多