#regex #.htaccess #mod-rewrite
#регулярное выражение #.htaccess #мод-перезапись
Вопрос:
Пожалуйста, простите меня, если это уже объяснялось в другом месте. Я искал и пробовал что-то в течение последних двух часов и все еще не могу заставить это работать. Ни один из примеров, которые я нашел до сих пор, не кажется вполне подходящим.
Кажется, что это должно быть невероятно просто. Я пытаюсь переписать следующие URL-адреса (исходный и целевой):
/product.cfm?item=17
/product/17
и
/parts.cfm?part=12
/speakers/12
…и я ничего не могу заставить работать.
Я пробовал такие вещи, как:
RewriteCond %{QUERY_STRING} ^part=(.*)$ [NC]
RewriteRule ^/parts.cfm$ /parts/$1 [NC,R=301]
и
RewriteRule ^/parts.cfm?part=(.*)$ /parts/$1 [NC,R=301]
Но я просто получаю страницу 404, что указывает на то, что она не проходит. И, к сожалению, у меня нет доступа к журналам на этом сервере, поэтому я не могу видеть, что происходит на самом деле.
Я все делаю неправильно? Есть ли какой-то другой способ справиться с этим? Вероятно, это просто односимвольная опечатка, не так ли?
Любая помощь очень ценится. Спасибо!
Ответ №1:
Вы должны уметь использовать
RewriteRule ^product/(d )$ product.cfm?item=$1 [L]
и
RewriteRule ^speakers/(d )$ parts.cfm?part=$1 [L]
для достижения ваших целей.
Первая часть — это входящий URL-адрес, вторая часть — это та часть, которую вы на самом деле хотите, чтобы сервер использовал. Похоже, вы их перепутали прямо сейчас.