2012-05-06 3 views
29

Все моих URL-адрес на моей установке Magento требует index.php в них, как:Как удалить index.php из URL?

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-адресов не работало as suggested here.

ответ

84

Это может быть старым, но я так же могу написать то, что я выучились. Так или иначе, я сделал это так.

---------->

Перед тем, как начать, убедитесь, что Apache переписывает модуль включен, а затем выполните действия, описанные ниже.

1) Войдите в свою административную область Magento, затем перейдите на страницу Система> Конфигурация> Веб.

2) Перейдите к небезопасный и Secure вкладок. Удостоверьтесь, что Необеспеченные и Безопасный - Базовый URL-адрес вариантов имеют ваше доменное имя внутри него и не оставляют косую черту в конце URL-адреса. Пример: http://www.yourdomain.co.uk/

3) В то время как все еще на веб-странице, перейдите к Search Engine Optimization вкладку и выберите ДА под Используйте переписывает веб-сервера вариант.

4) Перейдите на вкладку Secure снова (если уже не на нем) и выберите Да на Использовать Защищенные URL в опции Front-End.

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) Теперь переходим к системы> Управление кэш и выбрать все поля и убедитесь, что действия выпадающий устанавливается на Обновить, а затем отправить. (Это позволит обновить кеш.)

---------->

Если это не работает, пожалуйста, выполните следующие дополнительные шаги.

7) Перейти к Система> Конфигурация> web еще раз. На этот раз найдите Текущий диапазон конфигурации и выберите свой веб-сайт в выпадающем меню. (Это, конечно, он установлен по умолчанию Config)

8) Убедитесь, что небезопасный и Безопасные поля содержат один и тот же домен, как и в предыдущем умолчанию конфигурационный файл.

9) Перейдите к оптимизации вкладке Поисковики и выберите Да под Используйте переписывает веб-сервера раздел.

10) После того, как URL-адреса будут одинаковыми, а перезапись будет включена, сохраните эту страницу, затем вернитесь и убедитесь, что все они отмечены по умолчанию, а затем сохраните снова, если необходимо.

11) Повторите шаг 6.

Теперь ваша проблема index.php должна быть исправлена, и все должно быть хорошо !!!

Надеюсь, это поможет, и удачи.

+2

это awsome .. чувак upvote для вас –

+0

Имеет ли порядок строк? – NeoJi

+0

Я не уверен, что порядок строк имеет значение, я бы не подумал, что это происходит в этом сценарии. Чтобы быть в безопасности, я бы сохранил формат, представленный выше, поскольку это, похоже, работает для большого количества людей. – Blowtar

7

Как об этом в вашем .htaccess:

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

вообще никаких изменений. Magento сохраняет свой доступ на 'var/.htaccess', хотя - будет ли это проблемой? – delwin

+1

Magento хранит ** один ** своих файлов htaccess в var/.htaccess, в его деревьях каталогов несколько, чтобы предотвратить удаленный компромисс или чтение привилегированных мест. У вас должен быть один в корневом каталоге вашего сервера. –

25

Выполните следующие шаги, которые он будет помогает вам.

Шаг 1: Перейдите в корневую папку своего сайта, и вы можете найти файл .htaccess. Откройте его с помощью текстового редактора и найдите строку #RewriteBase /magento/. Просто замените его #RewriteBase / вынимают только «Magento /»

шаг 2: Затем перейдите в панель администратора и включите переписывает (установить да для использования переписывает веб-сервера). Вы можете найти его в System-> Configuration-> Web-> Search Engine Optimization.

Шаг 3: Затем перейдите на страницу управления кешем (управление системным кешем) и обновите свой кеш и обновите, чтобы проверить сайт.

+8

Вы измените комментарий на шаге 1 - вообще не имеет смысла –

+3

Вы редактируете комментарий ... бесполезно. – versedi

+0

для меня его работа после активации команды (удалить #) –

9

Вы должны включить mod_rewrite в Apache, чтобы очистить URLs работать

если mod_rewrite не в phpinfo вы должны установить его

sudo a2enmod rewrite 
sudo apache2ctl -l 

Вы должны заменить вхождение AllowOverride none в AllowOverride all (в/и т.д./apache2/сайты с поддержкой/000 по умолчанию)

перезапуска Apache

sudo service apache2 restart 

В админ Magento идут в System > Configuration > Web > search engine Optimization и изменить «Use Web Server Rewrites» Да

+0

Для будущих читателей: моя проблема связана с установкой по умолчанию «AllowOverride» на «Нет» - для нее должно быть установлено значение «Все» (для наименее неприятного опыта). – Jesse

+0

все еще не работает. –

+1

Это решило мою проблему, с конфигурацией по умолчанию .htaccess – ilhnctn

1

Я попробовал все на своем посту, но ничего не получалось. Затем я изменил в .htaccess фрагмент кода, который ErJab поставить следующим образом:

RewriteRule ^(.*)$ 'folder_name'/index.php/$1 [L] 

выше линии фиксированной для меня. где * folder_name * - корневая папка magento.

Надеюсь, это поможет!

2

Привет, я опаздываю на вечеринку .. просто хотел указать, что инструкции от http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ были действительно полезны.

я сервер Ubuntu установлен с Apache, MySql и Php, так что я думал, что я мог бы перейти к рубрикой Создание каталога, из которого Magento будет подан от и я достиг той же проблемой, ОП, то я имел ' 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 

Надеется, что это помогает

1

Если другие решения не работают, попробуйте это:

Шаг 1: (если установка находится в корневой директории)

Заменить

#RewriteBase /magento/ 

с

RewriteBase/

Шаг 2:

Добавить следующие строки (включая исключения администратора, потому что бэкенд нужно 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: Система-> Конфигурация-> Веб-> Поисковая оптимизация. Необходимо перезапустить перезаписи.

1

В основном, если вы используете систему на базе Linux Как Ubuntu, и это предлагается только для пользователя localhost, а не для сервера.

Следуйте всем шагам, указанным в предыдущих ответах. +

Проверьте конфигурацию Apache.(AllowOverride All) Если значение AllowOverride равно none, то измените его на All и снова перезапустите apache.

<Directory /var/www/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 

Дайте мне знать, если этот шаг поможет кому угодно. Поскольку это может сэкономить вам время, если вы найдете его раньше.

enter image description here

Я добавляю точные строки из моего файла Htaccess в локальном хосте. для справки

вокруг строки с номером 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] 

Изображения для некоторых пользователей, которые легко понять из изображения на из текста:

enter image description here

+0

Добавленное изображение для лучшего понимания начинающих –

Смежные вопросы