yapro / seo-bundle
此包的最新版本(v1.0.2)没有可用的许可信息。
v1.0.2
2022-08-07 11:01 UTC
Requires
- php: >=7.4.0
Requires (Dev)
- yapro/helpers: dev-master
This package is not auto-updated.
Last update: 2024-09-18 21:34:56 UTC
README
SEO 有用功能
安装
在您的 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