Как удалить index.php из URL?
Все мои URL-адреса моей установки Magento требуют в них index.php, например:
http://example.com/index.php/admin/
http://example.com/index.php/customer/account/login/
Проблема в том, что система по умолчанию ссылается на такие URL, как
http://example.com/admin/
http://example.com/customer/account/login/
Который выглядит в любом случае красивее. Я предполагаю, что это проблема с переписыванием в .htaccess, но, как возиться с тем, что в прошлом дало мне 500, я хотел бы сначала спросить вас, ребята.
Изменение настроек SEO, сброс кеша конфигурации и переиндексирование URL-адресов не работало как предлагалось здесь.
Ответы
Ответ 1
Это может быть старым, но я могу написать то, что я узнал.
Так или иначе, я сделал это таким образом.
---------- >
Перед запуском убедитесь, что модуль перезаписывания Apache включен, а затем выполните следующие действия.
1) Войдите в свою область администрирования Magento, затем перейдите в Системa > Конфигурация > Веб.
2) Перейдите на вкладку Необеспеченные и Безопасные. Убедитесь, что параметры Необеспеченные и Secure - базового URL имеют ваше доменное имя внутри него и не оставляют переднюю косую черту в конце URL. Пример: http://www.yourdomain.co.uk/
3) Пока на странице Веб перейдите на вкладку Поисковая оптимизация и выберите ДА под Использовать веб-сервер Переопределяет.
4) Перейдите на вкладку Безопасная еще раз (если она еще не указана) и выберите Да на Использовать безопасные URL-адреса в интерфейсе. > .
5) Теперь перейдите в корень вашей папки веб-сайта Magento и используйте этот код для своего .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 и замените исходный файл. (ПОЖАЛУЙСТА, УБЕДИТЕСЬ, ЧТОБЫ РЕЗЕРВИТЬ ВАШЕГО ОРИГИНАЛЬНОГО ФАЙЛА .htaccess ПЕРЕД СООБЩЕНИЕМ С ЭТОЙ!!!)
6) Теперь перейдите в Системa > Управление кэшем и выберите все поля и убедитесь, что раскрывающийся список Действия установлен на Обновить, затем отправьте, (Это, конечно, обновит кеш.)
---------- >
Если это не сработало, выполните следующие дополнительные действия.
7) Перейдите в раздел Системa > Конфигурация > веб. На этот раз найдите Текущая область конфигурации и выберите свой веб-сайт в раскрывающемся меню. (Это, конечно, установлено в Default Config)
8) Убедитесь, что поля Необеспеченные и Защищенные содержат тот же домен, что и предыдущий файл конфигурации по умолчанию.
9) Перейдите на вкладку Оптимизация поисковых систем и выберите Да под разделом Использовать веб-сервер для перезаписи.
10) Как только URL-адреса будут одинаковыми, а перезапись будет включена, сохраните эту страницу, затем вернитесь и убедитесь, что все они отмечены как по умолчанию, а затем сохраните снова, если необходимо.
11) Повторите шаг 6.
Теперь ваша проблема index.php должна быть исправлена, и все должно быть хорошо!!!
Надеюсь, это поможет, и удачи.
Ответ 2
Следуйте приведенным ниже инструкциям, которые вам помогут.
Шаг 1. Перейдите в корневую папку вашего сайта, и вы можете найти там файл .htaccess
. Откройте его с помощью текстового редактора и найдите строку #RewriteBase /magento/
. Просто замените его на #RewriteBase /
вытащите только "magento/"
Шаг 2: Затем перейдите на панель администратора и включите Rewrites (установите да для использования веб-сервера Rewrites). Вы можете найти его в System- > Configuration- > Web- > Search Engine Optimization.
Шаг 3: Затем перейдите на страницу управления кешем (управление системным кешем) и обновите кеш и обновите, чтобы проверить сайт.
Ответ 3
Вы должны включить mod_rewrite в apache, чтобы сделать чистые URL-адреса для работы
Если mod_rewrite не находится в phpinfo, вы должны установить его
sudo a2enmod rewrite
sudo apache2ctl -l
Вам нужно заменить появление AllowOverride none
на AllowOverride all
(в/etc/apache2/sites-enabled/000 по умолчанию)
Перезапустить Apache
sudo service apache2 restart
В Magentos admin перейдите к System > Configuration > Web > search engine Optimization
и измените "Use Web Server Rewrites
" на "Да"
Ответ 4
Как насчет этого в вашем .htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Ответ 5
Привет, я опаздываю на вечеринку.. просто хотел указать, что инструкции из http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ были действительно полезны.
У меня был сервер Ubuntu с Apache, MySql и Php, поэтому я подумал, что могу перейти к заголовку Создание каталога, из которого Magento будет обслуживаться от, и я достиг той же проблемы, что и OP, т.е. у меня был "index.php", необходимый во всех URL-адресах (или я бы не нашел 404). Затем я вернулся к установке и настройке HTTP-сервера Apache, и после перезапуска apache он отлично работает.
Для справки мне не хватало:
sudo bash -c "cat >> /etc/apache2/conf.d/servername.conf <<EOF
ServerName localhost
EOF"
... и
sudo a2enmod rewrite
sudo service apache2 restart
Надеюсь, что это поможет
Ответ 6
Я пробовал все на посту, но ничего не сработало.
Затем я изменил фрагмент .htaccess, который ErJab поставил для чтения:
RewriteRule ^(.*)$ 'folder_name'/index.php/$1 [L]
Вышеприведенная строка исправила это для меня. где * folder_name * - корневая папка magento.
Надеюсь, это поможет!
Ответ 7
Если другие решения не сработают для вас, попробуйте следующее:
Шаг 1: (если ваша установка находится в webroot)
Заменить
#RewriteBase /magento/
с
RewriteBase /
Шаг 2:
Добавьте следующие строки (включительно исключайте admin, потому что backend нуждается в index.php изнутри)
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.yourdomain.com/$1 [R=301,L]
RewriteRule ^index.php/(admin|user)($|/) - [L]
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]
сразу после
RewriteRule .* index.php [L]
Это работает для меня
Если он все еще не работает, дважды проверьте конфигурацию Magento:
System- > Configuration- > Web- > Поисковая оптимизация. Необходимо включить перезапись.
Ответ 8
В основном Если вы используете систему на базе Linux Как Ubuntu, и это предлагается только для пользователя localhost, а не для сервера.
Следуйте всем шагам, указанным в предыдущих ответах. +
Проверьте конфигурацию Apache. (AllowOverride All)
Если значение AllowOverride равно none, измените его на All и снова перезапустите apache.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Сообщите мне, помог ли этот шаг кому-либо. Поскольку это может сэкономить ваше время, если вы найдете его раньше.
![введите описание изображения здесь]()
Я добавляю точные строки из моего файла htaccess в localhost.
для вашей справки
Вокруг строки номер 110
<IfModule mod_rewrite.c>
############################################
## enable rewrites
Options +FollowSymLinks
RewriteEngine on
############################################
## you can put here your magento root folder
## path relative to web root
#RewriteBase /
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Изображения для некоторых пользователей, которые легко понимают изображение из текста:
![введите описание изображения здесь]()