Проблема перезаписи с .htaccess (удаление /index.php из URL-адресов CodeIgniter) - PullRequest
0 голосов
/ 27 октября 2010

У меня небольшая проблема с некоторыми правилами .htaccess на нашем сайте - http://www.presencemultimedia.co.uk

Мы недавно перестроили сайт с помощью CodeIgniter. Чтобы использовать красивые URL, я добавил несколько строк в наш файл .htaccess, как показано ниже:

RewriteEngine on

# CodeIgniter rules (forwards requests to index.php)
RewriteCond $1 !^(index\.php|images|robots\.txt|public)
RewriteRule ^(.*)$ /index.php/$1 [L]

# rewrites path to our primary domain (www.presencemultimedia.co.uk)
RewriteCond %{http_host} !www.presencemultimedia.co.uk$
RewriteRule ^(.*)$ http://www.presencemultimedia.co.uk/$1 [r=301,nc]

Второе правило перезаписи предназначено для обеспечения того, чтобы домен всегда был нашим основным доменом (www.presencemultimedia.co.uk).

Проблема, с которой я столкнулся, заключается в том, что если к веб-сайту обращаются с псевдонимом, например, http://www.prmulti.com, URL-адрес перезаписывается в основной домен, но добавляет /index.php/ к пути.

Например - http://www.prmulti.com/about/ следует переписать в http://www.presencemultimedia.co.uk/about/ вместо http://www.presencemultimedia.co.uk/index.php/about

Кто-нибудь может увидеть, где я иду не так?

Ура, Фил

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Мне повезло с этой конфигурацией:

RewriteEngine on

# rewrites path to our primary domain (www.presencemultimedia.co.uk)
RewriteCond %{http_host} !www.presencemultimedia.co.uk$
RewriteRule ^(.*)$ http://www.presencemultimedia.co.uk/$1 [r=301,nc,l]

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

Если правило домена совпадает, перенаправьте (но сделайте его последним правилом). Затем в правильном домене, если запрос не является существующим файлом или каталогом, перейдите к Code Igniter.

2 голосов
/ 27 октября 2010

Я бы подумал, что перенаправление 301 должно быть выше ваших правил CodeIgniter, давая:

RewriteEngine on

# rewrites path to our primary domain (www.presencemultimedia.co.uk)
RewriteCond %{http_host} !www.presencemultimedia.co.uk$
RewriteRule ^(.*)$ http://www.presencemultimedia.co.uk/$1 [r=301,nc]

# CodeIgniter rules (forwards requests to index.php)
RewriteCond $1 !^(index\.php|images|robots\.txt|public)
RewriteRule ^(.*)$ /index.php/$1 [L]

Я недавно разработал многосайтовую инфраструктуру для веб-сайта, и это порядок переписыванияЯ сначала использую: домен, а затем направлю результат через мой index.php.Теория должна быть такой же для готовых платформ, как CodeIgniter.

...