Каким образом переписать index.php?param=name в /param/name?

Собственно сам вопрос в топе. Пытаюсь сделать так:
Весь htaccess
RewriteEngine On
# RewriteCond %{ENV:HTTPS} !on
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} index\.php
RewriteRule ^(.*)index\.php$ /$1/ [R=301,L]
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

RewriteRule ^coin/(.+)$ /index.php?coin=$1 [L]


Последней строкой пытаюсь реализовать index.php?coin=Name в site.ru/coin/name, но вместо этого выходит site.ru/?coin=name, мне кажется что это из-за других правил в документе, но правильно решить эту проблему у меня не выходит.
  • Вопрос задан
  • 20 просмотров
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
GET не является частью урла по этому выделяется отдельно.
# 301 --- http://www.mydefile.ru/lookbook/?type=Рекламные+кампании&PAGEN_1=2 => http://www.mydefile.ru/news/campaigns/
RewriteCond %{QUERY_STRING} (^|&)type=Рекламные\+кампании($|&)
RewriteCond %{QUERY_STRING} (^|&)PAGEN_1=2($|&)
RewriteRule ^lookbook/$ /news/campaigns/? [L,R=301]


Все что вам остается это собрать группу в гет параметре
RewriteCond %{QUERY_STRING} (^|&)(coin=Name)($|&)
RewriteRule ^.*$ %2? [L,R=301]

Где %2 вьлоая группа из RewriteCond - аналог $2 если бы это был рул
Так же в правиле я показал что параметр может быть где угодно как начинаться с ? так и с &
Если без этого, то можно еще проще
RewriteCond %{QUERY_STRING} (coin=.+)
НУ и разумеется это уже будет %1
ОБРАТИТЕ ВНИМАНИЕ ЧТО
RewriteRule ^.*$ /%2? [L,R=301]
в конце стоит знак вопроса, он удалит все гет параметры с пути.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы