Удалить index.php с помощью htaccess

Hiptop спросил: 28 апреля 2018 в 08:40 в: php

Я хочу удалить index.php из url с помощью htaccess.Code Пример:

Options +FollowSymlinks
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

Например: если мой url https://url.com/index.php, тогда как сделать это https://url.com?

И второй вопрос: если кто-то набирает https://url.com/directory, который содержит неиндекс, то как перенаправить их в основной домен без index.php?

Я использую простой файл с одним индексом в корне, а не в фреймворке. и используя cloudflare dns.

Когда я заменил последнюю строку на RewriteRule ^ %1 [R=301,L], тогда работаю.

Например: https://url.com/demo или https://url.com/demo/demo1 (не существует каталога), то он перенаправляется на https://url.com без index.php.

Но когда URL-адрес https://url.com/index.php, он все еще показывая тот же URL https://url.com/index.php. Как удалить index.php?

6 ответов

Есть решение
Hiptop anubhava ответил: 28 апреля 2018 в 12:08

Вы можете использовать эти правила в корне сайта .htaccess:

Options +FollowSymlinks -Indexes
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ %1 [L,R=301,NE]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]
Hiptop ответил: 28 апреля 2018 в 09:57
Спасибо, что предложили. Но я только что отредактировал ваш код, который работает для меня.
Grigor IWT ответил: 28 апреля 2018 в 08:46

В корне вашего проекта создайте или поместите файл .htaccess. И добавьте следующие строки.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Hiptop ответил: 28 апреля 2018 в 08:50
Не работал для меня.
Hiptop ответил: 28 апреля 2018 в 09:30
См. Обновленный вопрос.
Mani Nagarajan ответил: 28 апреля 2018 в 08:42
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
Hiptop ответил: 28 апреля 2018 в 08:50
Не работал для меня.
Mani Nagarajan ответил: 28 апреля 2018 в 08:56
проверить перезаписываемый модуль?
Hiptop ответил: 28 апреля 2018 в 09:07
Да, модуль перезаписи включен.
Mani Nagarajan ответил: 28 апреля 2018 в 09:12
.htaccess и index.php находятся на одном пути?
Hiptop ответил: 28 апреля 2018 в 09:14
Да на том же пути.
Rahul kalal ответил: 28 апреля 2018 в 08:47
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]
Hiptop ответил: 28 апреля 2018 в 08:53
Спасибо. Но не работает.
Rahul kalal ответил: 28 апреля 2018 в 08:58
развертывание на сервере будет работать. может быть локально не работает, какой вы используете xamp или wamp?
Rahul kalal ответил: 28 апреля 2018 в 09:10
вы удаляете index.php из файла конфигурации? $ config ['index_page'] = ''; $ config ['uri_protocol'] = 'REQUEST_URI';
Hiptop ответил: 28 апреля 2018 в 09:15
НЕТ, я попробовал это на общем хостинге linux cpanel.
Rahul kalal ответил: 28 апреля 2018 в 09:22
Измените конфигурационный файл как верхний комментарий. все лучшее, я уверен, что это сработает
Ajay M. ответил: 28 апреля 2018 в 08:56

Пожалуйста, проверьте это, надеюсь, что это сработает:

RewriteRule ^(.*)$ index.php?/$1 [L] for more code check below link

удалить index.php из url

Hiptop ответил: 28 апреля 2018 в 09:08
Не работает....
Ajay M. ответил: 28 апреля 2018 в 09:10
@Hiptop попробуйте ниже код: RewriteEngine On RewriteCond% {THE_REQUEST} ^ [AZ] {3,9} \ /(.*) index \ .php ($ | \ | \?) RewriteRule ^ /% 1 [R = 301 , L]
Hiptop ответил: 28 апреля 2018 в 09:13
Не работает .....
Hiptop ответил: 28 апреля 2018 в 09:29
См. Обновленный вопрос.
vishal lunagariya ответил: 28 апреля 2018 в 09:39

, если использовать CodeIgniter

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

Else

    <IfModule mod_rewrite.c>
    RewriteEngine On    # Send would-be 404 requests to Craft
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
    RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>

Это основное правило, чтобы скрыть index.php из URL. Поместите это в свой файл .htaccess.

mod_rewrite должен быть включен с PHP, и это будет работать для версии PHP выше 5.2.6.

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

RewriteEngine OnRewriteBase /

# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
Hiptop ответил: 28 апреля 2018 в 09:11
Не работает.....
Hiptop ответил: 28 апреля 2018 в 09:29
См. Обновленный вопрос.