yapro/seo-bundle

此包的最新版本(v1.0.2)没有可用的许可信息。

v1.0.2 2022-08-07 11:01 UTC

This package is not auto-updated.

Last update: 2024-09-18 21:34:56 UTC


README

SEO 有用功能

lib tests

安装

在您的 composer.json 文件中添加作为需求或在生产环境中运行

composer require yapro/seo-bundle

作为开发环境

composer require yapro/seo-bundle dev-main

如何配置包

添加到 config/services.yaml

parameters:
  yapro.seo_bundle.redirect_page: '/redirect/page'
  yapro.seo_bundle.security_key: 'securityKey'
  yapro.seo_bundle.current_http_host: 'site.com'
  yapro.seo_bundle.protocols: ['https', 'http', 'ftp']

如何使用包

用安全的 SEO 链接替换外部链接

class MyController extends AbstractController
{
    /**
     * @Route("/article/{id}", methods={"GET"})
     */
    public function article(
        Article $article
        ContentManager $contentManager
    ): Response {
        $textWithSeoLinks = $contentManager->getSafeHtmlWithSeoLinks($article->getText());
        return new Response($textWithSeoLinks);
    }
}

为安全的 SEO 链接写一个重定向到外部链接的跳转

/**
 * @Route("/redirect/page", methods={"GET"})
 */
public function seoRedirect(Request $request, LinkManager $linkManager): Response
{
    $redirect = $linkManager->getRedirect($request->getRequestUri());
    if ($redirect->getHttpStatus() === 200) {
        return new Response('<META HTTP-EQUIV="Refresh" CONTENT="0; URL=' . $redirect->getUrl() . '">', 404);
    }
    throw $this->createNotFoundException('Redirect page not found');
}

添加到 robots.txt

User-agent: *
Disallow: /redirect/page

额外

您可以通过添加到 config/services.yaml 自动标记所有带有任何 GET 变量的页面,并带有标题 "X-Robots-Tag: noindex"。

YaPro\SeoBundle\NoindexResponseListener:
    tags:
        - { name: kernel.event_listener, event: kernel.response }

您可以通过添加到 config/services.yaml 自动重定向包含大写符号的 URL(也检查 GET 变量)到小写 URL。

YaPro\SeoBundle\CaseSensitiveRequestListener:
    tags:
        - { name: kernel.event_listener, event: kernel.request }

您可以通过添加到 config/services.yaml 自动注册没有 LastModified 标头的站点页面信息。

YaPro\SeoBundle\LastModifiedResponseListener:
    arguments:
        - "@monolog.logger"
        - ["/admin", "/login", "/etc"]
    tags:
        - { name: kernel.event_listener, event: kernel.response }

开发

构建

docker build -t yapro/seo-bundle:latest -f ./Dockerfile ./

测试

wget https://phar.phpunit.de/phpunit-9.5.16.phar -O phpunit.phar && chmod +x ./phpunit.phar
docker run --user=1000:1000 --rm -v $(pwd):/app -w /app yapro/seo-bundle:latest bash -c "
  composer install --optimize-autoloader --no-scripts --no-interaction && 
  ./phpunit.phar tests"

安装开发者的需求

docker run --user=1000:1000 --add-host=host.docker.internal:host-gateway -it --rm -v $(pwd):/app -w /app yapro/seo-bundle:latest bash
composer install -o

调试 PHP

PHP_IDE_CONFIG="serverName=common" \
XDEBUG_SESSION=common \
XDEBUG_MODE=debug \
XDEBUG_CONFIG="max_nesting_level=200 client_port=9003 client_host=host.docker.internal" \
./phpunit.phar --cache-result-file=/tmp/phpunit.cache -v --stderr --stop-on-incomplete --stop-on-defect \
--stop-on-failure --stop-on-warning --fail-on-warning --stop-on-risky --fail-on-risky tests

Cs-Fixer

wget https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.8.0/php-cs-fixer.phar && chmod +x ./php-cs-fixer.phar
docker run --user=1000:1000 --rm -v $(pwd):/app -w /app yapro/seo-bundle:latest ./php-cs-fixer.phar fix --config=.php-cs-fixer.dist.php -v --using-cache=no --allow-risky=yes

更新 phpmd 规则

wget https://github.com/phpmd/phpmd/releases/download/2.12.0/phpmd.phar && chmod +x ./phpmd.phar
docker run --user=1000:1000 --rm -v $(pwd):/app -w /app yapro/seo-bundle:latest ./phpmd.phar . text phpmd.xml --exclude .github/workflows,vendor --strict --generate-baseline