Правила перезаписи htaccess не работают с URL, которые заканчиваются на .cfm - PullRequest
4 голосов
/ 31 октября 2011

Я работаю над исправлением всех моих URL, чтобы они были короче с 301 переадресацией.Я исправил почти все из них, однако есть URL, заканчивающийся на .cfm, который не будет переписывать.

FROM: http://www.mydomain.com/index.cfm/catlink/17/pagelink/7/sublink/34/art/41/rec/1/page.cfm

TO: http://www.mydomain.com/story/resources/health/page/168/page.html

Если я изменю /page.cfm на /page.html, то перезапись будет работать.

Вот правило перезаписи, которое работает для других моих URL

RewriteRule ^index.cfm/catlink/([a-zA-Z0-9/-]+)([/])pagelink/([a-zA-Z0-9/-]+)([/])sublink/([a-zA-Z0-9/-]+)([/])art/([a-zA-Z0-9/-]+)(.*)$ 

http://localhost/index.cfm?page=moved&cat=$3&subcat=$5&article=$7&story=$8 [R=301]

Почему это работает, когда URL заканчивается на .html, а не когда он заканчивается на .cfm?Что я делаю не так?

Это текущая ссылка, и она не будет работать:

http://www.mydomain.com/index.cfm/catlink/17/pagelink/7/sublink/34/art/41/rec/1/page.cfm

Если я вручную изменю ее конец на .html, я смогу заставить его работать:

http://www.mydomain.com/index.cfm/catlink/17/pagelink/7/sublink/34/art/41/rec/1/page.html

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Проблема в том, что Apache httpd передает его Tomcat, прежде чем Apache просматривает .htaccess. Чтобы проверить это, переместите свои правила перезаписи в свой vhost. Если они работают, то вот в чем проблема.

0 голосов
/ 31 октября 2011

Прежде всего, замените первую часть вашего RewriteRule следующим кратким выражением:

^index.cfm/catlink/(\d+)/pagelink/(\d+)/sublink/(\d+)/art/(\d+)/(.*)$

Я полагаю, что только это может решить проблему.Однако, если это не так, и вам не нужно об остальной части URL, попробуйте следующее:

^index.cfm/catlink/(\d+)/pagelink/(\d+)/sublink/(\d+)/art/(\d+)/

Примечание: это удаляетпривязка ($) и, следовательно, позволяет открывать URL в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...