Как сохранить только последний параметр динамически в чистом URL, когда присутствует несколько параметров

Как я могу сделать последний параметр моего URL-адреса динамическим, когда у меня более 1 параметра

Например: Http: // Localhost: 8080 / серия / динамика / testurl / Обувь / Спорт

имеет 2 параметра, а именно «обувь» & «Спортивный». Чего я хотел бы добиться, так это сохранить обувь в качестве статического параметра & «Спорт» как динамический параметр, который можно изменить на «Бег», «Теннис» или «Случайный». Ниже описано, как я определил ссылки в php:

<a href="<?php echo 'Shoes'.'/'.$var2; ?>">Sports</a><br/>
<a href="<?php echo 'Shoes'.'/'.$var2; ?>">Running</a><br/>
<a href="<?php echo 'Shoes'.'/'.$var3; ?>">Tennis</a><br/>
<a href="<?php echo 'Shoes'.'/'.$var4; ?>">Casual</a><br/>

Пытаясь добиться этого с помощью кода выше & htaccess моя проблема, как только пользователь нажимает на теннис, в то время как на «Спорт» URL-адрес меняется ниже:

Http: // Localhost: 8080 / серия / динамика / testurl / Обувь / Обувь / Теннис

Или даже если я нажимаю на спортивную ссылку во второй раз, она меняется на:

Http: // Localhost: 8080 / серия / динамика / testurl / Обувь / Обувь / Спорт

в результате я получаю 404 не найдена ошибка. Следовательно, я надеюсь, что должен быть способ сохранить 1-й параметр неизменным и только 2-й параметр динамическим. Я знаю, что это не очень классический способ делать вещи, но я перешел на начальный уровень, чтобы иметь возможность сузить свои ошибки, но пока не повезло !!!

Я проверил различные источники, но ничего не помогло решить мою проблему. Пожалуйста, ведите меня в правильном направлении.

.htaccess выглядит так:

RewriteEngine On
RewriteBase /series/dynamics/testurl/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z]+)/?$ test.php?page=$1 [L,NC,QSA]
RewriteRule ^([a-zA-Z]+)/([^/]+)/?$ test.php?page=$1&subgroup=$2 [L,NC,QSA]

1

Решение

Похоже, это тот случай, когда вам нужно <base> тег в вашем HTML для обработки относительных URL-адресов.

Вы можете добавить это чуть ниже <head> раздел HTML вашей страницы:

<base href="/series/dynamics/testurl/" />

так что каждый относительный URL разрешается из этого базового URL, а не из URL текущей страницы.

0

Другие решения

Я думаю, что это может быть хорошо

RewriteEngine On
RewriteBase /series/dynamics/testurl/
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)(/?)$ test.php?page=$1&subgroup=$2 [L,NC]

Ах да, глупый я. Если вам нужно сохранить /series/dynamics/testurl/ в URL, то путь перезаписи должен быть просто / Это будет означать, что ваши URL будут написаны так: http://localhost/series/dynamics/testurl/Shoes/Tennis

В противном случае, если вы хотите, чтобы URL, как http://localhost/Shoes/Tennis тогда вы будете использовать полный путь перезаписи, как указано изначально ~ то есть: /series/dynamics/testurl/

Итак, в итоге:

RewriteEngine On
RewriteBase /series/dynamics/testurl/
RewriteRule ^([a-zA-Z0-9\.\-\_]+)/([a-zA-Z0-9\.\-\_]+)(/?)$ test.php?page=$1&subgroup=$2 [L,NC]
# write your url like this: `http://localhost/Shoes/Tennis`

# Or

RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9\.\-\_]+)/([a-zA-Z0-9\.\-\_]+)(/?)$ test.php?page=$1&subgroup=$2 [L,NC]
# write your urls like this: `http://localhost/series/dynamics/testurl/Shoes/Tennis`

В качестве теста здесь я сделал https://localhost/boots/rock-climbing который при распечатке $_GET Произведенные переменные:

Array ( [page] => boots [subgroup] => rock-climbing )
0

По вопросам рекламы [email protected]