Как я могу сделать последний параметр моего 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]
Похоже, это тот случай, когда вам нужно <base>
тег в вашем HTML для обработки относительных URL-адресов.
Вы можете добавить это чуть ниже <head>
раздел HTML вашей страницы:
<base href="/series/dynamics/testurl/" />
так что каждый относительный URL разрешается из этого базового URL, а не из URL текущей страницы.
Я думаю, что это может быть хорошо
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 )