Перезапись URL при использовании codeigniter - PullRequest
2 голосов
/ 25 января 2011

Я использую следующее для удаления моего index.php в codeigniter -

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L] 

Я заменяю старый сайт своим новым, написанным с codeigniter, из-за этого мне нужно переписать некоторые старые URLк новым.Это работает нормально для отдельных страниц, однако я сталкиваюсь с проблемой следующего переписывания -

RedirectMatch 301 ^/comments/(.*)/$ /location/$1 

Теоретически это должно перенаправить вас с: http://www.mysite.com/comments/123 на http://www.mysite.com/location/123

Поскольку я удаляю index.php с помощью переписывания, в конечном итоге меня направляют на -

http://www.mysite.com/location/123?/comments/123/

Кто-нибудь знает, как это исправить?

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 января 2011

Вы не должны смешивать mod_alias (RedirectMatch) и mod_rewrite.Вместо этого попробуйте это правило mod_rewrite:

RewriteRule ^comments/(.*)/$ /location/$1 [L,R=301]

Теперь просто убедитесь, что это правило стоит перед другим правилом.

1 голос
/ 25 января 2011

Наконец-то получил, для тех, кто заинтересован, мне пришлось добавить комментарии к условию перезаписи, которое я не упомянул в первом посте:

RewriteCond $1 !^(index\.php|media|images|css|js|comments|robots\.txt)

Надеюсь, это можетпомогите кому-нибудь еще.

...