Перезапись URL для перенаправления всех запросов на http://example.com/controller на http://example.com/index.php/controller без изменения URL - PullRequest
0 голосов
/ 02 августа 2010

Я бы хотел, чтобы все запросы к http://example.com/controller перенаправлялись на http://example.com/index.php/controller без изменения URL, и вот как выглядит мой файл .htaccess:

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]

  RewriteBase /
  RewriteCond %{HTTP_HOST} ^www.example.com [NC]
  RewriteRule ^(.*)$ http://example.com/$1 [R=301] 
</IfModule>

К сожалению, это не работает. Все запросы к http://example.com/controller направляются на домашний контроллер, и URL-адрес не изменяется. И все запросы к http://www.example.com/controller перенаправляются на http://example.com/index.php/controller, и URL-адрес ИЗМЕНЯЕТСЯ в адресной строке.

1 Ответ

1 голос
/ 02 августа 2010

Поместите те правила, которые вызывают внешнее перенаправление, перед теми, которые вызывают внутреннее перенаправление.Итак:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} =www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

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