Я хотел бы перенаправить URL-адреса, которые не входят в каталоги для одного скрипта (например, script1.php) и URL-адреса, которые имеют категории для другого скрипта (script2.php). В основном я хотел бы сделать что-то вроде этого: http://www.test.com/user1 ->http://www.test.com/script1.php?username=user1 где script1.php получает имя пользователя и представляет соответствующую страницу для этого пользователя. У меня есть та часть работы с этим кодом:Обработать .htaccess перенаправляет с различными параметрами?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ script1.php?username=$1 [L,QSA]
Сейчас проблема заключается в том, что я хотел бы иметь описательные URLs продукта, так что, например http://www.test.com/clothes/jackets/cool-red-jacket-25 перенаправляет на http://www.test.com/items.php?category=clothes&subcategory=jackets&id=25. У меня есть некоторый код, который должен работать для этого тоже:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-zA-Z-]+)/([a-zA-Z-]+)/.*-A([0-9-.]+)\.php$
script2.php?category=$1&subcategory=$2&id=$3 [L]
Проблема у меня комбинирует эти 2 вида переадресации. Первая переадресация всегда перенаправляется на собственную страницу, и второе перенаправление никогда не будет достигнуто. Можно ли объединить эти 2 и каким образом? В принципе мне нужно что-то подобное для HTAccess, если это возможно
if(!urlHasDirectories) {
redirect to script1.php?username=$username;
} else {
redirect to script2.php?category=$category&subcategory=subcategory&id=$id;
}
Chris $ 1 означает значение первого захвата gruop, но $ 1 не определено в вашем правиле. – starkeen
@Starkeen О, да, забыл реализовать это, было больше демонстрацией регулярных выражений. Я буду обновлять, спасибо. – chris85
@ chris85 Это то, что я искал! Спасибо за объяснение, мне просто нужно еще одно, если вы можете мне помочь. Я хотел бы извлечь идентификатор из URL-адреса. Предположим, что URL-адрес http: //...../jackets/cool-red-jacket-25, как я могу извлечь этот 25 в htaccess (это идентификатор продукта, и мне нужно его, чтобы я мог показать этот точный продукт)? Я попытался использовать этот «... /. * - A ([0-9 -.] +) $ Script2.php? Id = $ 1 [L, QSA]", но он извлекает всю строку (cool-red-jacket- 25). Могу ли я сделать это в htaccess или мне нужно получить всю строку и извлечь идентификатор в моем скрипте? –