Зашел в тупик! .проблемы с перезаписью регулярных выражений htaccess

#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-адрес, вторая часть — это та часть, которую вы на самом деле хотите, чтобы сервер использовал. Похоже, вы их перепутали прямо сейчас.