Маршрутизация CakePHP портит мой перенаправление .htaccess 301? - PullRequest
0 голосов
/ 01 июля 2010

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

Итак, вот правило, которое я добавляю в .htaccess:

Redirect 301 /oldhomepage.htm http://www.thesite.com/

Это вроде работает, но перенаправляет на

http://www.thesite.com/?url=oldhomepage.htm

Это какой-то конфликт с настройкой маршрутизации CakePHP?

РЕДАКТИРОВАТЬ: Кто-то указал, что это, вероятно, конфликт .htaccess, и это действительно так. CakePHP автоматически создает файл .htaccess (который находился в дочернем каталоге), который имеет следующее:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Есть ли какой-нибудь способ, которым я могу легко получить лучшее из обоих миров и иметь свои простые перенаправления на страницу 301 и также сохранять маршрутизацию CakePHP?

Ответы [ 2 ]

1 голос
/ 01 июля 2010

Если все старые URL-адреса заканчиваются на .htm, и ни один из ваших новых URL-адресов не имеет, вы можете отредактировать файл CakePHP .htaccess следующим образом:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.htm$
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
0 голосов
/ 01 июля 2010

Почему бы вам не использовать $this->redirect('http://www.thesite.com/', 301); в вашем контроллере?

...