redirect wiki pages to qualiwiki website
This commit is contained in:
parent
d68f738a4b
commit
8c1380ec04
2 changed files with 99 additions and 0 deletions
48
WIKI_REDIRECT_DOCUMENTATION.md
Normal file
48
WIKI_REDIRECT_DOCUMENTATION.md
Normal file
|
@ -0,0 +1,48 @@
|
|||
# Wiki Redirection Implementation
|
||||
|
||||
## Overview
|
||||
|
||||
This document explains the implementation of the redirection from `/wiki` routes to `https://qualiwiki.cipherbliss.com/wiki`.
|
||||
|
||||
## Implementation Details
|
||||
|
||||
The redirection is implemented using a Symfony Event Subscriber that intercepts all requests to paths starting with `/wiki` before they reach the routing system.
|
||||
|
||||
### Files Created
|
||||
|
||||
- `src/EventSubscriber/WikiRedirectSubscriber.php`: Event subscriber that handles the redirection
|
||||
|
||||
### How It Works
|
||||
|
||||
1. The `WikiRedirectSubscriber` subscribes to the `kernel.request` event with a high priority (256)
|
||||
2. When a request is received, the subscriber checks if the path starts with `/wiki`
|
||||
3. If it does, it extracts the part after `/wiki` and constructs a redirect URL by appending this part to `https://qualiwiki.cipherbliss.com/wiki`
|
||||
4. It creates a 301 (permanent) redirect response and sets it on the event
|
||||
5. This short-circuits the request handling process, preventing the request from reaching the routing system
|
||||
|
||||
### Example Redirects
|
||||
|
||||
- `/wiki` → `https://qualiwiki.cipherbliss.com/wiki`
|
||||
- `/wiki/` → `https://qualiwiki.cipherbliss.com/wiki`
|
||||
- `/wiki/page1` → `https://qualiwiki.cipherbliss.com/wiki/page1`
|
||||
- `/wiki/page1/subpage` → `https://qualiwiki.cipherbliss.com/wiki/page1/subpage`
|
||||
|
||||
### Technical Considerations
|
||||
|
||||
- The subscriber uses a high priority (256) to ensure it runs before the router processes the request
|
||||
- It only processes main requests, not sub-requests
|
||||
- It uses a 301 (permanent) redirect status code, which is appropriate for this type of redirection
|
||||
- The implementation follows Symfony best practices for event subscribers
|
||||
- The subscriber is automatically registered thanks to Symfony's auto-configuration feature
|
||||
|
||||
## Testing
|
||||
|
||||
To test the redirection:
|
||||
|
||||
1. Access any path starting with `/wiki` in the application
|
||||
2. Verify that you are redirected to the corresponding path on `https://qualiwiki.cipherbliss.com/wiki`
|
||||
3. Check that the redirect is a 301 (permanent) redirect
|
||||
|
||||
## Maintenance
|
||||
|
||||
If the target URL needs to be changed in the future, update the `REDIRECT_BASE_URL` constant in the `WikiRedirectSubscriber` class.
|
51
src/EventSubscriber/WikiRedirectSubscriber.php
Normal file
51
src/EventSubscriber/WikiRedirectSubscriber.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
namespace App\EventSubscriber;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
|
||||
class WikiRedirectSubscriber implements EventSubscriberInterface
|
||||
{
|
||||
private const WIKI_PATH_PREFIX = '/wiki';
|
||||
private const REDIRECT_BASE_URL = 'https://qualiwiki.cipherbliss.com/wiki';
|
||||
|
||||
public function onKernelRequest(RequestEvent $event): void
|
||||
{
|
||||
// Don't do anything if it's not the master request
|
||||
if (!$event->isMainRequest()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$request = $event->getRequest();
|
||||
$path = $request->getPathInfo();
|
||||
|
||||
// Check if the path starts with /wiki
|
||||
if (str_starts_with($path, self::WIKI_PATH_PREFIX)) {
|
||||
// Extract the part after /wiki
|
||||
$subPath = substr($path, strlen(self::WIKI_PATH_PREFIX));
|
||||
|
||||
// If subPath is empty or just a slash, redirect to the base URL
|
||||
if (empty($subPath) || $subPath === '/') {
|
||||
$redirectUrl = self::REDIRECT_BASE_URL;
|
||||
} else {
|
||||
// Otherwise, append the subPath to the redirect URL
|
||||
$redirectUrl = self::REDIRECT_BASE_URL . $subPath;
|
||||
}
|
||||
|
||||
// Create a redirect response
|
||||
$response = new RedirectResponse($redirectUrl, 301); // 301 is permanent redirect
|
||||
$event->setResponse($response);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
// Use a high priority to intercept the request before the router
|
||||
return [
|
||||
KernelEvents::REQUEST => ['onKernelRequest', 256],
|
||||
];
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue