PHPackages                             stonelasley/seo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. stonelasley/seo

ActiveCakephp-plugin[Utility &amp; Helpers](/categories/utility)

stonelasley/seo
===============

CakePHP Search Engine Optimization Plugin

1612PHP

Since Apr 29Pushed 11y ago1 watchersCompare

[ Source](https://github.com/stonelasley/seo)[ Packagist](https://packagist.org/packages/stonelasley/seo)[ RSS](/packages/stonelasley-seo/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (3)Used By (0)

[![Build Status](https://camo.githubusercontent.com/1fabaf34850459f1ea1ca1a4437e919586dc1ccc4234ff6df94d9a1310d94cb3/68747470733a2f2f7472617669732d63692e6f72672f73746f6e656c61736c65792f73656f2e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/stonelasley/seo) [![Coverage Status](https://camo.githubusercontent.com/ac0eaea0feec4a7551037a80ac6ecc619f255ad80240135481eb74be8ed07bad/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f73746f6e656c61736c65792f73656f2f62616467652e706e673f6272616e63683d6d6173746572)](https://coveralls.io/r/stonelasley/seo?branch=master) [![Total Downloads](https://camo.githubusercontent.com/0dd98cb084af5affc1972d53b0d6c7f1ed843a228492556f2322d1fb6e77e2eb/68747470733a2f2f706f7365722e707567782e6f72672f73746f6e656c61736c65792f73656f2f642f746f74616c2e706e67)](https://packagist.org/packages/stonelasley/seo) [![Latest Stable Version](https://camo.githubusercontent.com/0a1a446c2ae4eb345b5e90692d600f5b793f22619cd1dfc791e25c4d643a7cea/68747470733a2f2f706f7365722e707567782e6f72672f73746f6e656c61736c65792f73656f2f762f737461626c652e706e67)](https://packagist.org/packages/stonelasley/seo)

CakePHP-Seo-Plugin
==================

[](#cakephp-seo-plugin)

- Authors: Nick Baker, Alan Blount, Stone Lasley
- Originally forked from \[Using \]

Requirements
------------

[](#requirements)

- CakePHP 2.x
- PHP 5.3+

Installation
------------

[](#installation)

*\[Using [Composer](http://getcomposer.org/)\]*

Add the plugin to your project's `composer.json` - something like this:

```
  {
    "require": {
      "stonelasley/seo": "dev-master"
    }
  }

```

Because this plugin has the type `cakephp-plugin` set in its own `composer.json`, Composer will install it inside your `/Plugins` directory, rather than in the usual vendors file. It is recommended that you add `/Plugins/CakePHP-Seo-Plugin` to your .gitignore file. (Why? [read this](http://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md).)

*\[Manual\]*

- Download this:
- Unzip that download.
- Copy the resulting folder to `app/Plugin`
- Rename the folder you just copied to `CakePHP-Seo-Plugin`

*\[GIT Submodule\]*

In your app directory type:

```
  git submodule add -b master git://github.com/stonelasley/seo.git Plugin/Seo
  git submodule init
  git submodule update
```

*\[GIT Clone\]*

In your `Plugin` directory type:

```
git clone -b master git://github.com/stonelasley/seo.git Seo

```

### Enable plugin

[](#enable-plugin)

In 2.0 you need to enable the plugin in your `app/Config/bootstrap.php` file:

```
CakePlugin::load('Seo');

```

If you are already using `CakePlugin::loadAll();`, then this is not necessary.

Features
--------

[](#features)

Complete tool for all your CakePHP Search Engine Optimization needs

- Easy yet powerful 301 redirect tools only loaded when a 404 would otherwise occur
- Highly configurable and intelligent 404 deep url guessing utilizing levenshtein's distance and your sitemap.xml
- Highly configurable and customizable Meta Tags for any incoming URI
- Title tag overwrites based on URI
- Custom Status Codes based on URI
- Scrapper Banning administration, complete with honeyPot baiting for scrappers to ban themselves.
- Google Analytics AB Testing Management based on URIs

Setup
-----

[](#setup)

Create the file `app/config/seo.php` with the following configurations like so:

```

```

Usage
-----

[](#usage)

SEO Redirect/Status Code Quick Start
------------------------------------

[](#seo-redirectstatus-code-quick-start)

update file `app/Config/core.php` with the following:

```

```

update file `app/Config/bootstrap.php` with the following:

```
require_once(APP . 'Plugin' . DS . 'Seo' . DS . 'Lib' . DS . 'Error' . DS . 'SeoAppError.php');

```

### Add Redirects

[](#add-redirects)

`http://www.example.com/admin/seo/seo_redirects/`

### Add Status Code

[](#add-status-code)

`http://www.example.com/admin/seo/seo_status_codes/`

NOTE: Special case Status Code 200 will return minimum bandwidth noindex robots page, for alternative url killing (410 alternative)

SEO Meta Tags Quick Start
-------------------------

[](#seo-meta-tags-quick-start)

Include the `Seo.Seo` Helper to your `AppController.php`:

```
var $helpers = array('Seo.Seo');

```

Alter your layout to include the Seo Meta Tags in the head of your layout

```

```

### Add Meta Tags

[](#add-meta-tags)

`http://www.example.com/admin/seo/seo_meta_tags`

SEO Titles Quick Start
----------------------

[](#seo-titles-quick-start)

Include the `Seo.Seo` Helper to your `AppController.php`:

var $helpers = array('Seo.Seo');

Alter your layout to include the Seo Title in the head of your layout

```

```

### Add Title Tags

[](#add-title-tags)

`http://www.example.com/admin/seo/seo_titles`

SEO Canonical Quick Start
-------------------------

[](#seo-canonical-quick-start)

Include the `Seo.Seo` Helper to your `AppController.php`:

var $helpers = array('Seo.Seo');

Alter your layout to include the Seo Canonical in the head of your layout

```

```

### Add Canonical Links

[](#add-canonical-links)

`http://www.example.com/admin/seo/seo_canonicals`

SEO BlackList Quick Start
-------------------------

[](#seo-blacklist-quick-start)

Include The `Seo.BlackList` Component in your `AppController.php`:

```
var $components = array('Seo.BlackList');

```

Start adding honeypot links in and around your application to bait malicious content grabbers

```

```

Update your `robots.txt` to exclude `/seo/` from being spidered. All legitimate spiders will ignore the honeyPot

```
User-agent: *
Disallow: /seo/

```

### Add/Manage Banned IPs

[](#addmanage-banned-ips)

`http://www.example.com/admin/seo/seo_blacklists`

SEO AB Testing Quick Start
--------------------------

[](#seo-ab-testing-quick-start)

Include the `Seo.Seo` Helper and the `Seo.ABTest` Component to your `AppController.php`:

```
var $helpers = array('Seo.Seo');
var $components = array('Seo.ABTest');

```

In your GA code on your site add the line like so:

```

	var pageTracker = _gat._getTracker('UA-SOMEKEY');

```

In your `AppController.php`, to test if you're on a testable page and serve it do something like this:

```
public function beforeFilter(){
	if($test = $this->ABTest->getTest()){
		//Do things specific to this test
		$this->set('ABTest', $test);
		$this->view = $test['SeoABTest']['slug'];
	}
	return parent::beforeFilter();
}

```

ProTip: For debuging in your controller before going live in GA set the debug flag to true, this will return tests that aren't active yet.

```
$test = $this->SeoABTest->getTest(array('debug' => true));

```

### Add AB Tests

[](#add-ab-tests)

`http://www.example.com/admin/seo/seo_a_b_tests`

ProTip: By setting the ABTest to debug, it will return true in your controller, but you won't be tracking the GA code.

TODO
----

[](#todo)

License
-------

[](#license)

The MIT License (MIT)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/f3666bcd5b436fcc2c1d1dc62f529bea33bb14c6d87090ffd82ec3acdd829e67?d=identicon)[stonelasley](/maintainers/stonelasley)

---

Top Contributors

[![stonelasley](https://avatars.githubusercontent.com/u/1717836?v=4)](https://github.com/stonelasley "stonelasley (5 commits)")

### Embed Badge

![Health badge](/badges/stonelasley-seo/health.svg)

```
[![Health](https://phpackages.com/badges/stonelasley-seo/health.svg)](https://phpackages.com/packages/stonelasley-seo)
```

###  Alternatives

[psr7-sessions/storageless

Storageless PSR-7 Session support

652373.0k8](/packages/psr7-sessions-storageless)[bryanjhv/slim-session

Session middleware and helper for Slim framework 4.

233961.5k16](/packages/bryanjhv-slim-session)[logiscape/mcp-sdk-php

Model Context Protocol SDK for PHP

36274.1k6](/packages/logiscape-mcp-sdk-php)[bepsvpt/blurhash

A PHP implementation of BlurHash with Laravel integration.

130259.9k5](/packages/bepsvpt-blurhash)[frosh/development-helper

Development Helper

90286.1k](/packages/frosh-development-helper)[worksome/coding-style

Worksomes coding style

49771.7k57](/packages/worksome-coding-style)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
