Я использую MAMP и CodeIgniter. Корень моего сайта: /Users/Roy/Websites/CodeIgniter-3.0.2. В папке «Веб-сайты» у меня также есть другой проект, но я не думаю, что это важно. Вот файл apache httpd.conf: http://pastebin.com/Am0ew0C0
В моем файле .htaccess я использую следующее:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] <IfModule authz_core_module> Require all denied </IfModule> <IfModule !authz_core_module> Deny from all </IfModule>
файл .htaccess находится по адресу: /Users/Roy/Websites/CodeIgniter-3.0.2/.htaccess. Я понятия не имею, почему mod_rewrite не работает, он должен исключить использование index.php в URL-адресе, поскольку URL, который я должен использовать сейчас: http: // localhost: 8888 / CodeIgniter-3.0.2 / index.php / about
И я бы хотел, чтобы это стало: http: // localhost: 8888 / CodeIgniter-3.0.2 / о PHP версии 5.6.10. файл .htaccess не читается apache, вот в чем проблема, как его исправить?
Проблема решена, нет необходимости связываться с httpd.conf с установленной MAMP. Просто получите CodeIgniter и поместите его в папку htdocs внутри MAMP. После этого создайте файл .htaccess внутри папки CodeIgniter (а не папку приложения внутри) и используйте следующий код:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /ci/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Теперь у вас есть чистый URL-адрес, и вам больше не нужно использовать /index.php/about, но вы можете просто сделать это.
Возможно, из-за того, что вы установили свой корень документа в /Users/Roy/Websites/
в вашем файле httpd.conf. Лично я бы использовал virtualhosts
если вы планируете иметь несколько сайтов, чтобы каждый из них мог иметь собственный .conf
и вы можете установить корень документа специально для каждого сайта.
В любом случае, теперь ваш CodeIgniter-3.0.2
является подпапкой Websites
которая является вашим корнем для документов. Поэтому, скорее всего, у вас возникла проблема с базой перезаписи.
Если у вас есть файлы и .htaccess в папке codeigniter, ваш .htaccess должен выглядеть так.
RewriteEngine On RewriteBase /CodeIgniter-3.0.2 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L]
Вы можете использовать это
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /Project_Name RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> <IfModule !mod_rewrite.c> ErrorDocument 404 /index.php </IfModule>
Это похоже на проблему с разрешением файла. проверьте свойства вашего файла .htaccess и измените его.
Попробуйте этот код.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
для большей проверки http://w3code.in/2015/09/how-to-remove-index-php-file-from-codeigniter-url
.htaccess может быть очень расстраивающим. много занимайтесь тем, что действительно работает
1.Ваш.htaccess должен выглядеть так
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /booking/ RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>
2. Замените строку 3 корневым каталогом вашего проекта, в моем случае «localhost / booking /»
3. Скопируйте файл .htaccess из папки приложения в корневой каталог. Это означает, что теперь у вас будут экземпляры файла .htaccess во всем проекте.
4. в вашем config.php, базовый url должен выглядеть так в моем случае
$config['base_url'] = 'http://localhost/booking/'
5.
$config['index_page'] = '';
6.
$config['uri_protocol'] = 'REQUEST_URI';
7. включите Mod-rewrite в файле httpd.conf, удалив # перед этой строкой
LoadModule rewrite_module modules/mod_rewrite.so
Я надеюсь, что это решает вашу проблему