Kirby SEO Plugin Installation

Hi all,

Trying to install the SEO plugin from SEO | Love & Kindness on a kirby3 instance.

The installation guide (SEO - Installation & Setup | Love & Kindness) says to use composer, but I have no idea what that is and how to use it, so I went with the alternative and copied the repo to to /site/plugins/kirby-seo.

I then edited the site.yml blueprint as described in the doc – added two tabs, one for content with all the original fields, and then one for the plugin. That seemed to work, my panel is now indeed showing two tabs called content and seo. However, the seo tab just gives me this error: “The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml”

Not sure if this is the right place to ask my question, but maybe one of you can help me with this very newbie thing. Haven’t worked with Kirby since two years, so everything is a bit confusing to me.


Any takers? If this is off-topic or too easy, I apologize — let me know, would appreciate any feedback :slight_smile:

The things is, if you don’t post what you did, nobody can know if you really did what is decribed in the docs? More often than not, this is not true and therefore, it doesn’t work.

Search engines are your friends:

Thanks — I’ll try to be more specific.

This is my site.yml:

			- width: 3/4
					albums: sections/albums
			- width: 1/4
						type: pages
						create: default
							- home
							- default
							- ueber-uns
							- kleingedrucktes
							- kontakt
	seo: seo/site

That seems to work, as I get two tabs (“Content” and “SEO”) in the panel.

But when I click on the “SEO” tab, I get the error mentioned above (“The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml”).

As far as I understand, I did define the setup in site.yml following the install guide (SEO - Installation & Setup | Love & Kindness).

So maybe the plugin was not installed correctly in the first place? All I did was to copy the plugin folder to /site/plugins/kirby-seo. Maybe that was not enough?


Hard to tell from what you posted above, but if I just copy & paste it, the indentation of that site.yml blueprint seems to be wrong. Please double-check. Always use spaces, not tabs, two spaces per indentation level.

I’m also not sure as to which version of the plugin works with Kirby 3

I have just tried to install the plug-in in a fresh starter kit and immediately get a message when calling the panel:

The GitHub page also points out that the plug-in is only compatible for K4:

On the plug-in page, the compatibility note for K3 should then be removed to avoid confusion.

Version 0.3.4 seems to be the last version that is still compatible with K3. But is it recommended using an outdated version in an SEO world that is subject to constant change?

@tobimori is best placed to tell us about version compatibility.

Hello all,

for Kirby SEO, you can use max. version 0.3.4 with Kirby 3. The plugin should still work perfectly with it, I’m also using this version on a few sites. However, since this is a free plugin, and I have limited time, there won’t be any more updates to the Kirby 3 version. If necessary for your project, I’m willing to provide paid support for additional development of SEO for Kirby 3.

I looked at your blueprint @Nihil and couldn’t find anything wrong. The error message must clearly be related to the plugin not being able to be loaded. Manual installation should work without any issue, however composer is highly recommended. If you can zip me a folder of the whole project folder, I can take a look to see what’s wrong.

PS: regarding the K3 icon on the site, I’ve already mentioned my feedback to the Kirby team when the plugin site was in Beta

1 Like

Thank you for all your help, guys!

@texnixe: I’ve converted the indentation to spaces, two per level.

@GB_DESIGN: Thanks, I was not aware of this and was trying to install the most recent version of the plugin. Only looked at the plug-in page and thought that Kirby v3 would be supported.

@tobimori: I have replaced site/plugins/kirby-seo with the contents of the 0.3.4 zip file. However, now I get a catastrophic “This page is currently offline due to an unexpected error.” message from Kirby :scream: Will send you my project folder — thanks very much in advance for looking into this!

I could not reproduce this error with your project folder, it seems unrelated to the plugin. Try activating debug mode and figure out what it’s about.

Thanks! With debug mode activated, I get:

syntax error, unexpected '->' (T_OBJECT_OPERATOR)




I guess your PHP version is < PHP 8.0 then?

Aha, yes inded, it’s PHP 7.4. Would I break my Kirby 3 instance by updating to v8?

Depends on your K3 version, see What Kirby version starts requiring php 8? - #3 by texnixe

I don’t know if Kirby SEO supports anything older than Kirby 3.9/3.10. Haven’t tested that.

Kirby 3.6 and 3.7 are running out of security support in June, anyway. 3.8 will have security support until December this year, so these versions shouldn’t be used after that date, anyway.

1 Like

Thanks guys. Just wanted to install a plugin, but it seems I’m getting down the admin rabbit hole :laughing:

So I downloaded v3.10 and set up Apache and PHP 8.3 on my local machine to test drive the update. Copied the “live” folder from the web server, deleted the media folder, and replaced the kirby folder with the contents of the 3.10 zip file. According to Install & update via download | Kirby CMS, this should do the trick …

Now, Kirby seems to run — however, it didn’t rebuild the media folder so the local test site doesn’t display any images. Also, when I try to access the Panel, I’m getting a 404 error.

What could I’ve done wrong? I appreciate your support!

According to Installation issues | Kirby CMS I have to make sure that the .htaccess file that ships with Kirby is present in my Kirby folder … But I couldn’t find it in the contents of the 3.10 zip.

This is what my root looks like:

-rw-r--r--@  1 _www    _www   1794  4 Jun 15:33 .htaccess
-rw-r--r--@  1 _www    _www   2484  4 Jun 11:05
-rw-r--r--@  1 _www    _www    897  4 Jun 11:05 android-chrome-192x192.png
-rw-r--r--@  1 _www    _www   2032  4 Jun 11:05 android-chrome-512x512.png
-rw-r--r--@  1 _www    _www    615  4 Jun 11:05 apple-touch-icon.png
drwxr-xr-x@  7 _www    _www    224  4 Jun 11:05 assets
-rw-r--r--@  1 _www    _www    246  4 Jun 11:05 browserconfig.xml
-rw-r--r--@  1 _www    _www    823  4 Jun 11:05 composer.json
drwxr-xr-x@ 13 _www    _www    416  4 Jun 11:05 content
-rw-r--r--@  1 _www    _www    465  4 Jun 11:05 favicon-16x16.png
-rw-r--r--@  1 _www    _www    478  4 Jun 11:05 favicon-32x32.png
-rw-r--r--@  1 _www    _www  15086  4 Jun 11:05 favicon.ico
-rw-r--r--@  1 _www    _www     53  4 Jun 11:05 google41e6a45d7ddd6848.html
-rw-r--r--@  1 _www    _www     78  4 Jun 11:05 index.php
drwxr-xr-x@ 22 _www    _www    704  4 Jun 16:13 kirby
drwxr-xr-x   2 _www    _www     64  4 Jun 15:20 media
-rw-r--r--@  1 _www    _www    687  4 Jun 11:05 mstile-144x144.png
-rw-r--r--@  1 _www    _www    818  4 Jun 11:05 mstile-150x150.png
-rw-r--r--@  1 _www    _www   1007  4 Jun 11:05 mstile-310x150.png
-rw-r--r--@  1 _www    _www   1582  4 Jun 11:05 mstile-310x310.png
-rw-r--r--@  1 _www    _www    640  4 Jun 11:05 mstile-70x70.png
-rw-r--r--@  1 _www    _www    811  4 Jun 11:05 safari-pinned-tab.svg
drwxr-xr-x@ 14 _www    _www    448  4 Jun 11:05 site
-rw-r--r--@  1 _www    _www    426  4 Jun 11:05 site.webmanifest

It’s not in the 3.10 ZIP as that’s just the content of the kirby folder. The .htaccess sits one level higher. You can find it in the Plaint or Starterkit: Quickstart | Kirby CMS

But you already have it here, where it should be.

Regarding the issues, make sure that your server and PHP version meets the relevant requirements, in particular gd library for the thumbs.

.htaccess should look like this

# Kirby .htaccess
# revision 2023-07-22

# rewrite rules
<IfModule mod_rewrite.c>

# enable awesome urls. i.e.:
RewriteEngine on

# make sure to set the RewriteBase correctly
# if you are running the site in a subfolder;
# otherwise links or the entire site will break.
# If your homepage is,
# set the RewriteBase to:
# RewriteBase /mysite

# In some environments it's necessary to
# set the RewriteBase to:
# RewriteBase /

# block files and folders beginning with a dot, such as .git
# except for the .well-known folder, which is used for Let's Encrypt and security.txt
RewriteRule (^|/)\.(?!well-known\/) index.php [L]

# block all files in the content folder from being accessed directly
RewriteRule ^content/(.*) index.php [L]

# block all files in the site folder from being accessed directly
RewriteRule ^site/(.*) index.php [L]

# block direct access to Kirby and the Panel sources
RewriteRule ^kirby/(.*) index.php [L]

# make site links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]


# pass the Authorization header to PHP
SetEnvIf Authorization "(.+)" HTTP_AUTHORIZATION=$1

# compress text file responses
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# set security headers in all responses
<IfModule mod_headers.c>

# serve files as plain text if the actual content type is not known
# (hardens against attacks from malicious file uploads)
Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}"
Header set X-Content-Type-Options "nosniff"


Thanks Sonja, looks like there was some hiccup with the .htaccess from the live web server and my local httpd. With the .htaccess you provided, it worked! However, when I edited the file and saved it, everything went inaccessible again. Here’s what I added:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Also, I uncommented the RewriteBase / line.

I went and reverted the edits back to your original code, saved again, but no luck, even after restarting Apache. Is this some known behaviour? Seems kind of erratically.