Возможно ли, что ci url не будет работать с index.php. Я не хочу добавлять index.php в url. Если кто-то добавляет index.php в URL, он не должен работать. Я пробовал много способов. Пожалуйста, дайте мне предложение.
Я пытался, но это не работает
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
например,
если я использую ниже URL Это должно работать …………..
`example.com/abc`
если я использую ниже URL не должен работать
`example.com/index.php/abc`
Добавьте ниже код в верхней части index.php. Я думаю, что это решит вашу проблему.
if(strpos($_SERVER['REQUEST_URI'],'index.php') !== false){
header('location: http://xyx.com/404');
die();
}
Создайте файл .htaccess в корневом каталоге и сохраните в нем этот код
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Откройте приложение / config / config.php
//find the below code
$config['index_page'] = "index.php"//replace with the below code
$config['index_page'] = ""
/find the below code
$config['uri_protocol'] = "AUTO"//replace with the below code
$config['uri_protocol'] = "REQUEST_URI"
В Config.php
$config['base_url'] = 'http://localhost/website/';
$config['index_page'] = '';
# If Live site
# $config['base_url'] = 'http://stackoverflow.com/';
В .htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Проверьте мой ответ на другой вопрос Настройте базовый URL в codeigniter
Ты можешь использовать:
RewriteEngine On
# 403 Forbidden for index.php
RewriteCond %{THE_REQUEST} index\.php [NC]
RewriteRule ^ - [F]
# Rewrite to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Попробуйте следующий код, чем ..
измените следующее в config.php
$config['index_page'] = ""$config['uri_protocol'] = "REQUEST_URI"
Теперь откройте файл .htaccess и замените его следующим кодом.
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
если указанная выше строка не работает, замените строку новым кодом. Потому что .htaccess зависит от сервера
// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Попробуйте с приведенным ниже правилом,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,END]
RewriteRule ^index\.php* - [F]
Что именно вы имеете в виду, говоря url shouldn't work
он должен перенаправить на другой или заменить?
url shouldn't work
— я думаю, что вы должны сказать пользователю (сканеру), что в этой ссылке есть ошибка, если ссылка уже проиндексирована, сообщите сканеру, что это 404 not found
страница, и он прекратит индексирование этих страниц. Вы не можете отключить index.php/foo
полностью, потому что все запросы проходят index.php
(Я полагаю, если вы используете маршрутизацию)
Вот пример замены — https://htaccess.madewithlove.be?share=04dcf45c-32e9-5c29-b706-5869cd369ffd
Введите URL http://ex.com/index.php/abc
RewriteEngine On
RewriteRule index.php/(.*) /404 [L] #send user to not found page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Выходной URL http://ex.com/404
Просто измените ваш корневой файл .htaccess:
RewriteEngine on
RewriteBase /projectname
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Изменить в конфигурационном файле:
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';