#.htaccess #url-rewriting
#.htaccess #url-переписывание
Вопрос:
Привет, ребята, мне нужна помощь с apache htaccess. У меня есть этот URL-адрес 2:
- тест / ru / guns2 / beretta/
- test / ru / 1564 / vibram-beretta-m9a3/
как я могу по-другому уловить эти 2 ситуации?
на самом деле у меня есть этот htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/test/admin[NC]
RewriteCond %{REQUEST_URI} !^/test/(it|en) [NC]
RewriteRule ^(.*)$ /test/en/$1 [R=301,L,QSA]
RewriteRule ^([w-] )/([w-] )/(d )/([w-]*)$ /test/index.php?detMod=$3 [L,QSA,NC]
RewriteRule ^([w-] )/([w-] )/([w-] )/([w-]*)$ /test/index.php?page=$2amp;category=$3 [L,QSA,NC]
Но мне нужно другое правило для случая числа (1564) вместо (guns2)
Ответ №1:
Использовать d
для сопоставления только чисел и использовать [w-]
для сопоставления буквенно-цифровых символов, _
и -
:
^([w-] )/([w-] )/(d )/([w-]*)$
и
^([w-] )/([w-] )/([w-] )/([w-]*)$
Предложил .htaccess:
RewriteCond %{REQUEST_URI} !^/test/admin[NC]
RewriteCond %{REQUEST_URI} !^/test/(it|en) [NC]
RewriteRule ^(.*)$ /test/en/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([w-] )/([w-] )/(d )/([w-]*)$ test/index.php?detMod=$3 [L,QSA,NC]
RewriteRule ^([w-] )/([w-] )/([w-] )/([w-]*)$ test/index.php?page=$2amp;category=$3 [L,QSA,NC]
Комментарии:
1. не работает, братан … с url test / en / 1564 / vibram-beretta-m9a3 / apache получите правило с буквенно-цифровыми символами вместо правила с цифрами
2. Просто помните, что правило с числами должно быть помещено перед другим правилом
3. Правила отлично работают на моем локальном хосте. Я добавил предлагаемые изменения в ваш .htaccess в моем ответе. Удачи!
4. Убедитесь, что вы правильно его тестируете. Я скопировал / вставил предложенные мной правила в свой локальный apahe, и все работало отлично