Я написал приложение CodeIgniter, и я хочу использовать mod_rewrite для очистки моего URL. Я установил приложение CodeIgniter в htdocs / ci-intro /
Вот мой .htaccess файл:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /ci_intro/ #Removes access to the system folder by users. #Additionally this will allow you to create a System.php controller, #previously this would not have been possible. #'system' can be replaced if you have renamed your system folder. RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] #When your application folder isn't in the system folder #This snippet prevents user access to the application folder #Submitted by: Fabdrol #Rename 'application' to your applications folder name. RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] #Checks to see if the user is attempting to access a valid file, #such as an image or css document, if this isn't true it sends the #request to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> <IfModule !mod_rewrite.c> # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. # Submitted by: ElliotHaughin ErrorDocument 404 /index.php </IfModule>
Я изменил config.php в CodeIgniter следующим образом:
$config['base_url'] = ''; $config['index_page'] = '';
Всякий раз, когда я использую свои ссылки для перехода на страницу, я получаю сообщение 404 от CodeIgniter. URL-адрес в моем браузере, кажется, «очищен», хотя (index.php удален). Это URL:
'HTTP: // локальный: 8888 / ci_intro / о'
Может ли кто-нибудь помочь мне избавиться от ошибки 404 и фактически направлять ее на страницу?
ОС: MAC OS X 10.8.2 (последняя версия)
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ SERVER: MAMP
PHP: 5.2.17
Браузеры: Chrome & Safari (в обоих браузерах эта проблема возникает)
Перед рассмотрением конфигурации вашего сервера, пожалуйста, попробуйте код ниже:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /ci_intro/ #Removes access to the system folder by users. #Additionally this will allow you to create a System.php controller, #previously this would not have been possible. #'system' can be replaced if you have renamed your system folder. RewriteCond %{REQUEST_URI} ^system.* RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] #Checks to see if the user is attempting to access a valid file, #such as an image or css document, if this isn't true it sends the #request to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> <IfModule !mod_rewrite.c> # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. # Submitted by: ElliotHaughin ErrorDocument 404 /index.php </IfModule>
попробуй это…
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /Your_folder_Name/index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /Your_folder_Name/index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ Your_folder_Name/index.php?/$1 [L] </IfModule>
Кстати, я использую ту же конфигурацию, что и ваша, и в конечном итоге она не работает независимо от того, как я ее меняю.
Поэтому я отказался от его изменения и попробовал еще одну простую настройку. Попробуйте это, это работает для меня! 🙂
<IfModule mod_rewrite.c> RewriteEngine on # If the start of the URL doesn't match one of these... RewriteCond $1 !^(index\.php|robots\.txt|assets|cache|images|uploads) # Route through index.php RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{REQUEST_URI} ^system.*
вероятно, не будет запускаться, поскольку REQUEST_URI начинается с /. Пытаться
RewriteCond %{REQUEST_URI} ^/system
То же самое для
RewriteCond %{REQUEST_URI} ^application.*
И действительно ли ваша система хочет /index.php?/blah blah? Ожидается URL-адрес строки запроса после?.