перезапись кодов в URL не работает

1

Раньше у меня это работало без проблем, но по какой-то причине на моем новом сервере я просто не могу заставить его работать.

У меня есть следующий.htaccess файл в корне моего приложения

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

Я также включил mod_rewrite и подтвердил это с помощью php_info()

мой сайт находится в /var/www/html/test

Возможно ли, что хотя mod_rewrite включен, что он не работает, и если да, то как его проверить?

Теги:
codeigniter
.htaccess
mod-rewrite

2 ответа

1
Лучший ответ

На некоторых реализациях сервера вам необходимо обернуть его в теги <IfModule>.

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

Также проверьте файл httpd.conf, чтобы убедиться, что он имеет:

Options FollowSymLinks
AllowOverride All

Также стоит проверить, чтобы файл .htaccess не был переопределен другим файлом .htaccess.

Простой способ проверить, работает ли.htaccess

Просто .htaccess файл .htaccess:

deny from All

Это означает, что вы запрещаете доступ к вашему сайту со всех сторон. Если при попытке доступа к сайту вам предоставляется запрет 403 - файл .htaccess включен. Если нет - см. Выше.

0

Я использую это на моей установке codeigniter

RewriteEngine on
# prevent these directories from hitting CI
RewriteCond $1 !^(index\.php|images|assets|robots\.txt|crossdomain\.xml)
# route everything else to the index.php
RewriteRule ^/(.*)$ /index.php/$1 [QSA]

(моя настройка выполняется в виртуальном хосте.conf, а не в.htaccess, хотя они обычно имеют одинаковую конфигурацию)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню