Почему этот файл .htaccess mod_rewrite не работает?

Я использую 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 

Я надеюсь, что это решает вашу проблему