htaccess удалить index.php из URL - PullRequest
       19

htaccess удалить index.php из URL

42 голосов
/ 06 декабря 2010

У меня проблема с тем, что Google проиндексировал некоторые страницы с неправильным URL.

URL, который они индексируют:

http://www.example.com/index.php/section1/section2

Мне нужно перенаправить на:

http://www.example.com/section1/section2

.htaccess не моя сильная сторона, поэтому любая помощь будет высоко ценится.

Заранее спасибо.

Ответы [ 9 ]

58 голосов
/ 06 декабря 2010

Это основное правило, которое скрывает 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]
46 голосов
/ 03 июня 2014

Чтобы удалить index.php из URL и перенаправить посетителя на версию страницы, отличную от index.php:

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Это чисто перенаправит /index.php/myblog на простой /myblog.

Использование перенаправления 301 сохранит рейтинг в поисковой системе Google.

17 голосов
/ 28 января 2014
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
8 голосов
/ 03 ноября 2016

Предполагая, что существующий URL равен

http://example.com/index.php/foo/bar

, и мы хотим преобразовать его в

 http://example.com/foo/bar

. Вы можете использовать следующее правило:

RewriteEngine on
#1) redirect the client from "/index.php/foo/bar" to "/foo/bar"
RewriteCond %{THE_REQUEST} /index\.php/(.+)\sHTTP [NC]
RewriteRule ^ /%1 [NE,L,R]
#2)internally map "/foo/bar" to "/index.php/foo/bar"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php/$1 [L]

Inspep # 1, который мы сначала сопоставляем со строкой запроса и фиксируем все после / index.php / , а захваченное значение сохраняется в % 1 var.Затем мы отправляем браузер на новый URL.№ 2 обрабатывает запрос внутренне.Когда браузер достигает / foo / bar , # 2rule переписывает новый URL в исходное местоположение.

5 голосов
/ 09 февраля 2015

Выполните следующие действия

1. Убедитесь, что модуль хостинга / вашего компьютера mod_rewrite активен.если не активен, попробуйте активировать каким-либо способом, откройте файл httpd.conf.Вы можете проверить это в phpinfo.php, чтобы узнать.

измените этот параметр:

#LoadModule rewrite_module modules/mod_rewrite.so

на и перезапустите wamp

LoadModule rewrite_module modules/mod_rewrite.so

2. Затем перейдите в файл .htaccess и попробуйте изменить его так:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

, если указанное выше не работает, попробуйте следующее:

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

3. Переместить файл .htaccess в корневой каталог, где находится index.php.

www OR root folder
- index.php
- .htaccess
3 голосов
/ 11 марта 2017

Шаги по удалению index.php из URL для вашего сайта WordPress.

  1. Убедитесь, что на вашем сервере включен mod_rewrite.Чтобы проверить, включен он или нет - создайте 1 файл phpinfo.php в корневой папке с помощью следующей команды.
  <?php
    phpinfo?();
  ?>

Теперь запустите этот файл - www.yoursite.com/phpinfo.php, и он покажет mod_rewrite в разделе «Загрузка модулей».Если не включен, то выполните следующие команды на вашем терминале.

sudo a2enmod rewrite
sudo service apache2 restart
Убедитесь, что ваш .htaccess существует в корневой папке WordPress, если нет, создайте один файл .htaccess. Вставьте этот код в свой файл .htaccess: -
 <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

Далее разрешите .htaccess для 666, чтобы он стал доступен для записи, и теперь вы можете вносить изменения в постоянные ссылки WordPress.

Теперь перейдите в Настройки -> Постоянные ссылки -> и измените нужный вам формат URL.Удалите этот код /index.php/%year%/%monthnum%/%day%/%postname%/ и вставьте этот код в пользовательскую структуру: /% postname% /

Еслидо сих пор не удалось проверить ваш хостинг, мой сервер digitalocean, поэтому я сам очистил его

Отредактировал файл /etc/apache2/sites-enabled/000-default.conf

Добавлена ​​эта строка после DocumentRoot / var / www / html

    <Directory /var/www/html>
    AllowOverride All
    </Directory>

Перезагрузите сервер Apache

Примечание: / var / www / html будет вашимкорень документа

0 голосов
/ 29 мая 2019

Для получения дополнительной информации и учебника codeigniter

создайте файл .htaccess в корневом каталоге проекта и поместите ниже код для удаления index.php

  RewriteEngine on
  RewriteCond $1 !^(index.php|resources|robots.txt)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
0 голосов
/ 05 января 2019

Это будет работать, используйте следующий код в файле .htaccess ПереписатьEngine 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]

0 голосов
/ 21 августа 2018

Некоторые могут получить 403 с помощью метода, указанного выше, используя mod_rewrite. Другое решение для перезаписи index.php заключается в следующем:

<IfModule mod_rewrite.c> 

RewriteEngine On

# Put your installation directory here:
RewriteBase /

# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

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