Это htaccess переписать правильно? - PullRequest
0 голосов
/ 25 ноября 2011

В моем файле htaccess есть следующее.Я пытаюсь сделать

domain.com/index.php/view/whatever доступным через domain.com/whatever, а также перенаправить с non www на www.

Это работает для всех URL, которые имеют index.php/view в них, но теперь другие URL, в которых нет index.php/view, не работают.Пример: domain.com/index.php/site/pages больше не работает, поскольку в нем нет index.php/view.

Я хочу, чтобы htaccess влиял только на те URL, в которых есть index.php/view, а не на что-либо еще.Что мне нужно сделать, чтобы это исправить?

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php/view/$1 [L]

RewriteCond %{http_host} ^domain.com [nc]
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

ОБНОВЛЕНИЕ. Чтобы сузить круг вопросов, как я могу иметь оба правила, как это.они нужны мне оба

RewriteRule ^(.*)$ /index.php/view/$1 
RewriteRule ^(.*)$ /index.php/site/$1 

1 Ответ

1 голос
/ 25 ноября 2011

Итак, если запрос сделан на что-то вроде http://domain.com/index.php/site/pages,, вы хотите, чтобы он прошел через нетронутым, но если это что-то вроде http://domain.com/whatever,, вы хотите, чтобы он был переписан?

Первое правило, которое у вас есть, соответствует всему (кроме файлов и каталогов).Вы, вероятно, хотите сузить RewriteRule чем-то вроде:

RewriteRule! ^ Index.php /index.php/view/$1 [L]

HTH

Neal

...