редактирование файла .htaccess


3

Я сделал приложение с помощью CodeIgniter, и я попытался использовать Apache mod_rewrite правила, которые перечислены на CodeIgniter User Guide следующим образом:

RewriteEngine on

RewriteCond $1 !^(index\.php|images|robots\.txt)

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

Проблема в том, что у меня есть это приложение в складке er abc/, но когда я набираю mysite/abc/something (который должен указывать на mysite/abc/index.php/something), я получаю перенаправление на mysite/index.php/something.

Какие изменения следует внести в файл .htaccess, чтобы он работал правильно?

1

Попробуйте использовать относительный путь к замещению:

RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 

3
RewriteCond $1 !(index\.php|^images|^robots\.txt) 
RewriteRule (.*) index.php/$1 [L,NS] 
  0

ли вы забыли '^' или это так? кроме того что делает [L, NS] делать? 22 фев. 092009-02-22 12:34:00

  0

Я удалил исходный элемент^на RewriteCond, чтобы он игнорировал любой index.php на вашем сайте, а не только /index.php (^ index.php НЕ соответствует /abc/index.php; он находится в .htaccess в подкаталог не создает пути относительно этого подкаталога). Правило^и $ в правиле не имело значения. 22 фев. 092009-02-22 12:50:09

  0

NS подавляет правило о подзапросах. Когда правило запускается, подзапрос генерируется с индексом index.php/как URL; NS останавливает правило от просмотра подзапроса. Проверка index.php RewriteCond также должна помешать перезаписыванию, поэтому это своего рода пояс и подтяжки. 22 фев. 092009-02-22 12:52:41