Я использую роутер PHP (AltoRouter), который позволяет мне определять маршруты любым способом, но не выполняет никакого перенаправления.
Я хочу, чтобы мой маршрут «/» оставался без изменений.
Но если кто-то переходит к чему-то другому, кроме ‘/’, у меня есть маршрутный символ, который берет имя этого маршрута, находит файл ветки и отображает его на основе имени. Так что «/ о» будет найти about.twig
и сделать это.
Чего я хочу добиться, так это если кто-то перейдет к «/ about» или «/ contact» и т. Д., То они будут перенаправлены на «/ pages / about», «/ pages / contact» и т. Д., Но если они перейдите к «/ pages / about» напрямую, тогда нет необходимости перенаправлять маршрут.
Мой текущий файл .htaccess выглядит так:
RewriteEngine on
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
К сожалению, я много раз искал и не нашел, как выполнить конкретный условный повторный маршрут / перенаправление. Особенно не тот, который оставил корень «/» в покое.
Постскриптум pages
на самом деле это не каталог на сервере. Я просто хочу вставить «страницы» перед именем страницы.
Попробуйте добавить это сразу после RewriteEngine on
:
RewriteCond %{REQUEST_URI} !=/
RewriteCond %{REQUEST_URI} !^/pages/
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule (.*) /pages/$1 [R,L]
Других решений пока нет …