diff --git a/src/public/_redirects b/src/public/_redirects index 21a26280..227f7fc2 100644 --- a/src/public/_redirects +++ b/src/public/_redirects @@ -30,3 +30,159 @@ /docs/why-leaf-5.html https://blog.leafphp.dev/posts/leaf-5 301 /docs/leaf-ui https://ui.leafphp.dev 301 /docs/leaf-ui.html https://ui.leafphp.dev 301 + +# Old phpDocumentor URLs. Search engines indexed a doubled /api/classes/classes/ path +# (relative links + ), and older builds also had vendor classes +# (Illuminate, Symfony) that no longer exist. Send them to the closest docs page. +/api/classes/classes/Leaf-Router.html /docs/routing/ 301 +/api/classes/classes/Leaf-Db-Core.html /docs/database/ 301 +/api/classes/classes/Leaf-App.html /docs/ 301 +/api/classes/classes/Leaf-Http-Request.html /docs/http/request 301 +/api/classes/classes/Leaf-Date.html /docs/utils/date 301 +/api/classes/classes/Leaf-Exception-Run.html /docs/routing/error-handling 301 +/api/classes/classes/Leaf-Exception-Handler-PrettyPageHandler.html /docs/routing/error-handling 301 +/api/classes/classes/Aloe-Command.html /docs/mvc/commands 301 +/api/classes/classes/Symfony-Component-Console-Command-Command.html /docs/mvc/console 301 +/api/classes/classes/Illuminate-Database-Eloquent-Model.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Builder.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Collection.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-SoftDeletes.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-HasAttributes.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-HasRelationships.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-HasEvents.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-HasTimestamps.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-HasGlobalScopes.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-HidesAttributes.html /docs/database/models 301 +/api/classes/classes/Illuminate-Database-Eloquent-Concerns-GuardsAttributes.html /docs/database/models 301 +/api/classes/Symfony-Component-Console-Command-Command.html /docs/mvc/console 301 +/api/classes/Illuminate-Database-Eloquent-Model.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Builder.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Collection.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-SoftDeletes.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-HasAttributes.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-HasRelationships.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-HasEvents.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-HasTimestamps.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-HasGlobalScopes.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-HidesAttributes.html /docs/database/models 301 +/api/classes/Illuminate-Database-Eloquent-Concerns-GuardsAttributes.html /docs/database/models 301 +# Other Leaf classes still have a real API page: fix the doubled path. +/api/classes/classes/Aloe-Command-AppDownCommand.html /api/classes/Aloe-Command-AppDownCommand.html 301 +/api/classes/classes/Aloe-Command-AppUpCommand.html /api/classes/Aloe-Command-AppUpCommand.html 301 +/api/classes/classes/Aloe-Command-Config.html /api/classes/Aloe-Command-Config.html 301 +/api/classes/classes/Aloe-Command-ConfigLibCommand.html /api/classes/Aloe-Command-ConfigLibCommand.html 301 +/api/classes/classes/Aloe-Command-ConfigPublishCommand.html /api/classes/Aloe-Command-ConfigPublishCommand.html 301 +/api/classes/classes/Aloe-Command-DatabaseMigrationCommand.html /api/classes/Aloe-Command-DatabaseMigrationCommand.html 301 +/api/classes/classes/Aloe-Command-DatabaseResetCommand.html /api/classes/Aloe-Command-DatabaseResetCommand.html 301 +/api/classes/classes/Aloe-Command-DatabaseRollbackCommand.html /api/classes/Aloe-Command-DatabaseRollbackCommand.html 301 +/api/classes/classes/Aloe-Command-DatabaseSeedCommand.html /api/classes/Aloe-Command-DatabaseSeedCommand.html 301 +/api/classes/classes/Aloe-Command-DeleteConsoleCommand.html /api/classes/Aloe-Command-DeleteConsoleCommand.html 301 +/api/classes/classes/Aloe-Command-DeleteControllerCommand.html /api/classes/Aloe-Command-DeleteControllerCommand.html 301 +/api/classes/classes/Aloe-Command-DeleteModelCommand.html /api/classes/Aloe-Command-DeleteModelCommand.html 301 +/api/classes/classes/Aloe-Command-DevToolsCommand.html /api/classes/Aloe-Command-DevToolsCommand.html 301 +/api/classes/classes/Aloe-Command-EnvGenerateCommand.html /api/classes/Aloe-Command-EnvGenerateCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateConsoleCommand.html /api/classes/Aloe-Command-GenerateConsoleCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateControllerCommand.html /api/classes/Aloe-Command-GenerateControllerCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateHelperCommand.html /api/classes/Aloe-Command-GenerateHelperCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateMailerCommand.html /api/classes/Aloe-Command-GenerateMailerCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateMiddlewareCommand.html /api/classes/Aloe-Command-GenerateMiddlewareCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateModelCommand.html /api/classes/Aloe-Command-GenerateModelCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateSchemaCommand.html /api/classes/Aloe-Command-GenerateSchemaCommand.html 301 +/api/classes/classes/Aloe-Command-GenerateTemplateCommand.html /api/classes/Aloe-Command-GenerateTemplateCommand.html 301 +/api/classes/classes/Aloe-Command-InteractCommand.html /api/classes/Aloe-Command-InteractCommand.html 301 +/api/classes/classes/Aloe-Command-KeyGenerateCommand.html /api/classes/Aloe-Command-KeyGenerateCommand.html 301 +/api/classes/classes/Aloe-Command-LinkCommand.html /api/classes/Aloe-Command-LinkCommand.html 301 +/api/classes/classes/Aloe-Command-ScaffoldAuthCommand.html /api/classes/Aloe-Command-ScaffoldAuthCommand.html 301 +/api/classes/classes/Aloe-Command-ScaffoldMailCommand.html /api/classes/Aloe-Command-ScaffoldMailCommand.html 301 +/api/classes/classes/Aloe-Command-ServeCommand.html /api/classes/Aloe-Command-ServeCommand.html 301 +/api/classes/classes/Aloe-Command-ViewBuildCommand.html /api/classes/Aloe-Command-ViewBuildCommand.html 301 +/api/classes/classes/Aloe-Command-ViewDevCommand.html /api/classes/Aloe-Command-ViewDevCommand.html 301 +/api/classes/classes/Aloe-Command-ViewInstallCommand.html /api/classes/Aloe-Command-ViewInstallCommand.html 301 +/api/classes/classes/Aloe-Console.html /api/classes/Aloe-Console.html 301 +/api/classes/classes/Aloe-Core.html /api/classes/Aloe-Core.html 301 +/api/classes/classes/Aloe-Installer.html /api/classes/Aloe-Installer.html 301 +/api/classes/classes/Aloe-Package.html /api/classes/Aloe-Package.html 301 +/api/classes/classes/Leaf-Alchemy-Commands-EjectCommand.html /api/classes/Leaf-Alchemy-Commands-EjectCommand.html 301 +/api/classes/classes/Leaf-Alchemy-Commands-InstallCommand.html /api/classes/Leaf-Alchemy-Commands-InstallCommand.html 301 +/api/classes/classes/Leaf-Alchemy-Commands-SetupCommand.html /api/classes/Leaf-Alchemy-Commands-SetupCommand.html 301 +/api/classes/classes/Leaf-Alchemy-Core.html /api/classes/Leaf-Alchemy-Core.html 301 +/api/classes/classes/Leaf-Anchor-CSRF.html /api/classes/Leaf-Anchor-CSRF.html 301 +/api/classes/classes/Leaf-Anchor.html /api/classes/Leaf-Anchor.html 301 +/api/classes/classes/Leaf-Auth-Config.html /api/classes/Leaf-Auth-Config.html 301 +/api/classes/classes/Leaf-Auth-Model.html /api/classes/Leaf-Auth-Model.html 301 +/api/classes/classes/Leaf-Auth-User.html /api/classes/Leaf-Auth-User.html 301 +/api/classes/classes/Leaf-Auth-UsesRoles.html /api/classes/Leaf-Auth-UsesRoles.html 301 +/api/classes/classes/Leaf-Auth.html /api/classes/Leaf-Auth.html 301 +/api/classes/classes/Leaf-BareUI.html /api/classes/Leaf-BareUI.html 301 +/api/classes/classes/Leaf-Blade.html /api/classes/Leaf-Blade.html 301 +/api/classes/classes/Leaf-Config.html /api/classes/Leaf-Config.html 301 +/api/classes/classes/Leaf-Console-InstallCommand.html /api/classes/Leaf-Console-InstallCommand.html 301 +/api/classes/classes/Leaf-Console-Utils-Package.html /api/classes/Leaf-Console-Utils-Package.html 301 +/api/classes/classes/Leaf-Controller.html /api/classes/Leaf-Controller.html 301 +/api/classes/classes/Leaf-Core.html /api/classes/Leaf-Core.html 301 +/api/classes/classes/Leaf-Database.html /api/classes/Leaf-Database.html 301 +/api/classes/classes/Leaf-Db-Builder.html /api/classes/Leaf-Db-Builder.html 301 +/api/classes/classes/Leaf-Db-Utils.html /api/classes/Leaf-Db-Utils.html 301 +/api/classes/classes/Leaf-Db.html /api/classes/Leaf-Db.html 301 +/api/classes/classes/Leaf-Exception-General.html /api/classes/Leaf-Exception-General.html 301 +/api/classes/classes/Leaf-Exception-Handler-CallbackHandler.html /api/classes/Leaf-Exception-Handler-CallbackHandler.html 301 +/api/classes/classes/Leaf-Exception-Handler-CustomHandler.html /api/classes/Leaf-Exception-Handler-CustomHandler.html 301 +/api/classes/classes/Leaf-Exception-Handler-Handler.html /api/classes/Leaf-Exception-Handler-Handler.html 301 +/api/classes/classes/Leaf-Exception-Handler-HandlerInterface.html /api/classes/Leaf-Exception-Handler-HandlerInterface.html 301 +/api/classes/classes/Leaf-Exception-Handler-JsonResponseHandler.html /api/classes/Leaf-Exception-Handler-JsonResponseHandler.html 301 +/api/classes/classes/Leaf-Exception-Handler-PlainTextHandler.html /api/classes/Leaf-Exception-Handler-PlainTextHandler.html 301 +/api/classes/classes/Leaf-Exception-Handler-XmlResponseHandler.html /api/classes/Leaf-Exception-Handler-XmlResponseHandler.html 301 +/api/classes/classes/Leaf-Exception-RunInterface.html /api/classes/Leaf-Exception-RunInterface.html 301 +/api/classes/classes/Leaf-Exception-Util-HtmlDumperOutput.html /api/classes/Leaf-Exception-Util-HtmlDumperOutput.html 301 +/api/classes/classes/Leaf-Exception-Util-Misc.html /api/classes/Leaf-Exception-Util-Misc.html 301 +/api/classes/classes/Leaf-Exception-Util-SystemFacade.html /api/classes/Leaf-Exception-Util-SystemFacade.html 301 +/api/classes/classes/Leaf-Exception-Util-TemplateHelper.html /api/classes/Leaf-Exception-Util-TemplateHelper.html 301 +/api/classes/classes/Leaf-Exceptions-ErrorException.html /api/classes/Leaf-Exceptions-ErrorException.html 301 +/api/classes/classes/Leaf-Exceptions-Formatter.html /api/classes/Leaf-Exceptions-Formatter.html 301 +/api/classes/classes/Leaf-Exceptions-Frame.html /api/classes/Leaf-Exceptions-Frame.html 301 +/api/classes/classes/Leaf-Exceptions-FrameCollection.html /api/classes/Leaf-Exceptions-FrameCollection.html 301 +/api/classes/classes/Leaf-Exceptions-Inspector.html /api/classes/Leaf-Exceptions-Inspector.html 301 +/api/classes/classes/Leaf-FS-Directory.html /api/classes/Leaf-FS-Directory.html 301 +/api/classes/classes/Leaf-FS-File.html /api/classes/Leaf-FS-File.html 301 +/api/classes/classes/Leaf-FS-Path.html /api/classes/Leaf-FS-Path.html 301 +/api/classes/classes/Leaf-FS-Storage.html /api/classes/Leaf-FS-Storage.html 301 +/api/classes/classes/Leaf-Fetch.html /api/classes/Leaf-Fetch.html 301 +/api/classes/classes/Leaf-Flash.html /api/classes/Leaf-Flash.html 301 +/api/classes/classes/Leaf-Form.html /api/classes/Leaf-Form.html 301 +/api/classes/classes/Leaf-Helpers-Password.html /api/classes/Leaf-Helpers-Password.html 301 +/api/classes/classes/Leaf-Http-Cache.html /api/classes/Leaf-Http-Cache.html 301 +/api/classes/classes/Leaf-Http-Cors.html /api/classes/Leaf-Http-Cors.html 301 +/api/classes/classes/Leaf-Http-Headers.html /api/classes/Leaf-Http-Headers.html 301 +/api/classes/classes/Leaf-Http-Response.html /api/classes/Leaf-Http-Response.html 301 +/api/classes/classes/Leaf-Http-Session.html /api/classes/Leaf-Http-Session.html 301 +/api/classes/classes/Leaf-Http-Status.html /api/classes/Leaf-Http-Status.html 301 +/api/classes/classes/Leaf-Inertia-Ssr-BundleDetector.html /api/classes/Leaf-Inertia-Ssr-BundleDetector.html 301 +/api/classes/classes/Leaf-Inertia-Ssr-Gateway.html /api/classes/Leaf-Inertia-Ssr-Gateway.html 301 +/api/classes/classes/Leaf-Inertia-Ssr-Response.html /api/classes/Leaf-Inertia-Ssr-Response.html 301 +/api/classes/classes/Leaf-Inertia.html /api/classes/Leaf-Inertia.html 301 +/api/classes/classes/Leaf-Job.html /api/classes/Leaf-Job.html 301 +/api/classes/classes/Leaf-Log.html /api/classes/Leaf-Log.html 301 +/api/classes/classes/Leaf-LogWriter.html /api/classes/Leaf-LogWriter.html 301 +/api/classes/classes/Leaf-Mail-Mailer.html /api/classes/Leaf-Mail-Mailer.html 301 +/api/classes/classes/Leaf-Mail.html /api/classes/Leaf-Mail.html 301 +/api/classes/classes/Leaf-Middleware.html /api/classes/Leaf-Middleware.html 301 +/api/classes/classes/Leaf-Model.html /api/classes/Leaf-Model.html 301 +/api/classes/classes/Leaf-Queue-Adapters-Adapter.html /api/classes/Leaf-Queue-Adapters-Adapter.html 301 +/api/classes/classes/Leaf-Queue-Adapters-Database.html /api/classes/Leaf-Queue-Adapters-Database.html 301 +/api/classes/classes/Leaf-Queue-Adapters-Redis.html /api/classes/Leaf-Queue-Adapters-Redis.html 301 +/api/classes/classes/Leaf-Queue-Commands-DeleteJobCommand.html /api/classes/Leaf-Queue-Commands-DeleteJobCommand.html 301 +/api/classes/classes/Leaf-Queue-Commands-GenerateJobCommand.html /api/classes/Leaf-Queue-Commands-GenerateJobCommand.html 301 +/api/classes/classes/Leaf-Queue-Commands-QueueWorkCommand.html /api/classes/Leaf-Queue-Commands-QueueWorkCommand.html 301 +/api/classes/classes/Leaf-Queue-Config.html /api/classes/Leaf-Queue-Config.html 301 +/api/classes/classes/Leaf-Queue-Dispatchable.html /api/classes/Leaf-Queue-Dispatchable.html 301 +/api/classes/classes/Leaf-Queue.html /api/classes/Leaf-Queue.html 301 +/api/classes/classes/Leaf-Redis-Adapter.html /api/classes/Leaf-Redis-Adapter.html 301 +/api/classes/classes/Leaf-Redis-Commands-ServeCommand.html /api/classes/Leaf-Redis-Commands-ServeCommand.html 301 +/api/classes/classes/Leaf-Redis-Native.html /api/classes/Leaf-Redis-Native.html 301 +/api/classes/classes/Leaf-Redis-Predis.html /api/classes/Leaf-Redis-Predis.html 301 +/api/classes/classes/Leaf-Redis.html /api/classes/Leaf-Redis.html 301 +/api/classes/classes/Leaf-Schema.html /api/classes/Leaf-Schema.html 301 +/api/classes/classes/Leaf-Vite.html /api/classes/Leaf-Vite.html 301 +/api/classes/classes/Leaf-Worker.html /api/classes/Leaf-Worker.html 301 +# Anything else under the doubled path, or other removed vendor pages. +/api/classes/classes/* /docs/ 301