CodeIgniter - удалил расширение index.php И .php с помощью .htaccess - PullRequest
0 голосов
/ 25 июня 2018

Прежде чем я получу ответ «Двойной вопрос», обратите внимание, что я спрашиваю, как я могу добавить некоторые правила mod_rewrite к моему текущему .htaccess с помощью следующего:

Options +FollowSymLinks

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 

Моя проблема в том, что у меня есть файлы за пределами каталога приложения, которые не настроены с помощью контроллера. Итак, как я могу полностью удалить все расширения .php с моим текущим .htaccess, сохранив при этом возможность удалить параметр index.php (или, index) из URL?

РЕДАКТИРОВАТЬ: я пробовал другой RewriteCond и RewriteRule. CodeIgniter выбрасывает 404, хотя, так как считает, что это контроллер.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

для удаления index.php из URL в CodeIgniter.Вы должны выполнить следующие шаги.

1.Добавьте следующий код в .htaccess, и .htaccess должен находиться в корневой папке.

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

2.измените $config['index_page'] = 'index.php'; на $config['index_page'] = '';

, вам не нужно удалять .php в CodeIgniter, потому что он не существует.если хочешь учиться!поэтому используйте этот код для удаления расширения .php, добавьте этот код в .htaccess

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
0 голосов
/ 25 июня 2018

В соответствии с Удалите расширение .php с помощью .htaccess , вам необходимо добавить

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

к вашему .htaccess НО , вам следуетдобавьте его перед правилами CodeIgniter следующим образом:

Options +FollowSymLinks

RewriteEngine on

# Serve up non-CodeIgniter PHP files if they are requested without their extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

# CodeIgniter rewrite rules
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Поскольку mod_rewrite обрабатывает и применяет правила по порядку, вы хотите, чтобы сначала были опробованы файлы, отличные от CodeIgniter, а затем попали в правила CodeIgniter.


У меня нет связи с этим сайтом, и я уверен, что есть другие подобные, но если вы когда-нибудь хотели просто протестировать правила перезаписи с различными URL-адресами, посмотрите https://htaccess.madewithlove.be/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...