htaccess файл удалить индекс.php из url

у меня проблема, когда google проиндексировал некоторые страницы с неправильным url-адресом.

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

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

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

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

.htaccess не моя сильная сторона, поэтому любая помощь будет очень признательна.

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

7 ответов


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

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

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

удалить index.php из URL и перенаправить посетителя на неиндекс.php версия страницы:

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

это будет чисто перенаправить /index.php/myblog просто /myblog.

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


RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

предполагая, что существующий 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/ [L]

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


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

1. убедитесь, что модуль hosting / your pc 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/ [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 файл в корневой каталог, где находится указатель.php есть.

www OR root folder
- index.php
- .htaccess

шаги для удаления индекса.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
  1. убедитесь, что ваш .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>
  1. далее сделайте разрешение .htaccess до 666, чтобы он стал доступным для записи, и теперь вы можете вносить изменения в свои постоянные ссылки wordpress.

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

  3. если все еще не удалось, то проверьте свой хостинг, мой был digitalocean server, поэтому я очистил его сам

отредактировал файл / etc/apache2/sites-enabled / 000-по умолчанию.conf

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

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

перезапустите apache сервер

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


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

<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/ [L]

</IfModule>