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.
- проверьте, что на вашем сервере должен быть включен 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.
Теперь перейдите в Настройки - > permalinks - > и измените на нужный формат URL-адреса. Удалите этот код / индекс.php / %year% / %monthnum% / % day% / %postname%/ и вставьте этот код в пользовательскую структуру: / %postname%/
если все еще не удалось, то проверьте свой хостинг, мой был 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>