Раньше у меня это работало без проблем, но по какой-то причине на моем новом сервере я просто не могу заставить его работать.
У меня есть следующий.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 включен, что он не работает, и если да, то как его проверить?
На некоторых реализациях сервера вам необходимо обернуть его в теги <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
:
deny from All
Это означает, что вы запрещаете доступ к вашему сайту со всех сторон. Если при попытке доступа к сайту вам предоставляется запрет 403 - файл .htaccess
включен. Если нет - см. Выше.
Я использую это на моей установке 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, хотя они обычно имеют одинаковую конфигурацию)