2011-01-24 2 views
2

Я использую следующий, чтобы удалить мой index.php в CodeIgniter -URL переписывание во время использования CodeIgniter

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

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

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

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

Потому что я удаление индекса. PHP через переписывание я кончаю вверх направляется на -

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

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

Спасибо.

ответ

1

Нельзя смешивать mod_alias (RedirectMatch) и mod_rewrite. Попробуйте это правило mod_rewrite:

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

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

+0

Спасибо, я не так хорош в перезаписи URL. Думал, что я не должен смешивать эти два, но это был единственный способ найти работу. – Tom

1

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

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

Надеется, что это может помочь кому-то еще.

Смежные вопросы