Попробуйте вместо этого.
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L]
Это:
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)
Должно соответствовать запросу. Таким образом, он должен найти cat в начале запроса и соответствовать группе после cat, которая является var. Теперь вы также можете сопоставить подкатегории тоже.
Чтобы сопоставить несколько, вы можете сделать что-то вроде
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)\&sub1=([a-zA-Z0-9]+)
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)\&sub1=([a-zA-Z0-9]+)\&sub2=([a-zA-Z0-9]+)
И тогда вы можете использовать% 1,% 2,% 3 в качестве переменных.
Это:
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L]
Будет соответствовать весь URL минус домен. И вы используете% 1, чтобы получить группу после перезаписи.
=============== СТАРЫЙ ===============
Я не очень хорошо разбираюсь в регулярных выражениях, но ^ будет соответствовать началу строки. Так что попробуйте.
^categories\/details\.php\?cat=(.*)$
Then you will need to use http://www.example.com/categories/$1
Если вам нужно, чтобы я объяснил вам это регулярное выражение, дайте мне знать. Это достаточно просто, чтобы я мог это объяснить.
Вы можете заменить эту часть:
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$
RewriteRule ^details\.php$ http://www.example.com/categories/%1.php [R=302,L]
с:
RewriteRule ^categories\/details\.php\?cat=(.*)$ http://www.example.com/categories/$1
Я не могу точно вспомнить, как работает mod_rewrite, поэтому я не хочу предоставлять вам недостоверную информацию с помощью rewriteCond.
Хорошо, используйте то, что у вас было раньше. Попробуйте просто добавить категории к нему.
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L]
Также примечание:
Я бы, вероятно, тоже использовал + вместо *. Так что ^? Cat = ([a-zA-Z0-9] +) $
Попробуйте что-то вроде этого:
RewriteCond %{QUERY_STRING} ^(.*&)?cat=([a-zA-Z0-9]+)$
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%2 [L]