Видалити /index.php з URL-адреси Magento дає помилку 404


26

Я використовую Magento ver. 1.7.0.2.

Ось це посилання на мій веб-сайт: http://dev.blokeundees.com.au/

Мені потрібно видалити /index.phpпапку з URL-адрес, щоб я також редагував .htaccessфайл і бекенд (захищено, веб-сервер переписує) і/index.php був належним чином видалений.

Але при доступі до фронтенду він повертає помилку 404 (Сторінку не знайдено) для кожної сторінки, крім індексної сторінки.

Я не знаю, чому це відбувається.


Як @ sander-mangel пояснив, перевірте своє, htaccessя додам, надайте нам свій вміст htaccess, щоб зрозуміти, що не так
Sylvain Rayé,

1
Чи вдалося вам вирішити проблему?
Сандер Мангел

Відповіді:


27

Як видалити index.php з URL-адрес Magento

Magento - це фантастична платформа для продажу в Інтернеті, мабуть, найкраще, але є одна річ, яка завжди залишала мене розчарованою як SEO ... Цей дотепний каталог index.php в URL-адресі ВСІХ внутрішніх сторінок - кошмар!

Користі для них немає.

Вони погані для SEO, погані для структури сайту та послідовності, і тоді вони ще гірші за чистий URL-фрік, як я. Вони недостатньо сексуальні. Давайте прибираємо речі.

SEO дружні Magento URL-адреси в два кроки

На щастя, поки я недавно робив магазин Magento для клієнта, я трохи копав і знайшов досить просте вирішення проблеми. Він включає декілька змін у налаштуваннях адміністратора Magento та додавання або модифікацію простого файлу .htaccess для впорядкування переписування їх стандартних URL-адрес магазину.

Виконайте прості кроки, наведені нижче, і ви будете на крок ближче до успіху SEO з власним магазином Magento, і ваш SEO не буде приводом для зниження релевантності.

1) Давайте змінимо налаштування, адміністратор

Перше, що вам потрібно зробити - це увійти до своєї адміністративної панелі Magento (index.php / admin), щоб змінити дуже просту настройку, яка дозволить Magento знати, що ви маєте намір використовувати переписування URL-адрес у вашому магазині, а не їх некрасивий за замовчуванням URL-адреси.

Увійдіть і змініть це налаштування:

Перейдіть до системи> Конфігурація> Веб> Оптимізація пошукових систем

Використовуйте переписування веб-сервера: ТАК

Це було легко, чи не так? Гаразд, тепер для останнього кроку.

2) Давайте скористаємось .htaccess-файлом, щоб переписати URL-адреси

Останній крок передбачає створення .htaccess-файлу в папці інсталяції Magento, щоб зробити комплімент налаштуванням, які ви змінили раніше в налаштуваннях адміністратора, і це фактично перезаписує URL-адреси. Виберіть відповідну версію .htaccess нижче.

Якщо ваш магазин Magento встановлений в root (public_html), використовуйте це:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Якщо ваш магазин Magento встановлений у підпапці (public_html / shop), використовуйте це:

RewriteEngine On
RewriteBase /shop/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /shop/index.php [L]

Ви закінчили - сподівайтеся, що це допомагає!

Це неодмінно зупинить ваш SEO від виривання його волосся.

Повідомте мене в коментарях нижче, якщо ви користуєтесь цим або стикаєтесь з будь-якими проблемами!


2
Це не працює в моїй версії Magento, 1.9.x. Це видаляє index.phpз URL-адреси, але призводить до 404 ліворуч та праворуч.
Літній розробник

10

Переконайтеся, що у вас є робочий .htaccessфайл, за бажанням ви можете взяти його із нового завантаження версії Magento.

Також перевірте, чи mod_rewriteвключено на вашому сервері. Це можна зробити, прочитавши phpinfo();скрипт на вашому сервері. Цей пост Stackoverflow розповідає, як.


Крім того, ви повинні бути впевнені, що Система -> Конфігурація -> Веб -> Конфігурація пошукових систем -> Використовувати перезаписи веб-сервера.
Барбанет

Робочий і записуваний .htaccess файл.
Раптор

6

Щоб видалити index.phpURL-адреси, виконайте наведені нижче дії.

  1. Увійти Magento Admin
  2. Йти до System -> Configuration -> Web
  3. На вкладці " Оптимізація пошукової системи" Використовувати перезапис веб-сервера виберіть ТАК .
  4. Переконайтеся, що ваші захищені та незахищені базові URL-адреси повинні закінчуватися символом "/" .
  5. Тепер відредагуйте свою .htaccess(буде у кореневій папці magento) та вставте код, який вказано за цим посиланням

5

Вам не потрібно змінювати, крім наступних пунктів. просто зробіть ці два налаштування, і вам буде все в порядку. в Системі -> Конфігурація -> Веб -> Оптимізація пошукових систем, виберіть ТАК.

А в Системі -> Конфігурація -> Веб -> Захищено -> Використовуйте захищені URL-адреси на фронті, виберіть ДА. Оновіть кеш, якщо все ще виникає проблема у вашому файлі httpd.config. AllowOverride Ніщо не змінить на AllowOverride Все все зараз буде гаразд


У моєму httpd.config немає такого рядка, як, AllowOverride None,. то як я можу змінити AllowOverride All
zus

3

Здебільшого, коли ми працюємо в WAMP / XAMPP, нам потрібно:

1) для перевірки переписати модуль переписати

наприклад, коли ми встановлюємо wampp в C: \ wamp, ми можемо знайти httpd.conf в C: \ wamp \ bin \ apache \ apache2.4.9 \ conf та включити його, видаливши знак #

LoadModule rewrite_module modules/mod_rewrite.so

2) включити RewriteBase

наприклад, коли ми встановлюємо magento v1.9 в C: \ wamp \ www \ magento, нам потрібно відредагувати стандартну .htaccess у кореневій папці magento, щоб бути

RewriteBase /magento/

А також нам потрібно включити правило перезапису за замовчуванням, видаливши знак #

RewriteRule .* index.php [L]

3) в Системі -> Конфігурація -> Веб -> Оптимізація пошукових систем, виберіть ДА.

А в Системі -> Конфігурація -> Веб -> Захищено -> Використовуйте захищені URL-адреси на фронті, виберіть ДА.

Коли ми працюємо на сервері LAMP, схоже, що нам потрібно перевірити всі вищезазначені елементи, щоб включити модуль перезапису на роботу, вважаючи, що має бути багато відмінностей у деталях.


3

Робоче рішення для видалення index.php з URL-адреси, виключаючи Admin.And, якщо хтось розмістить index.php в URL-адресі, він перенаправить на URL, який не містить index.php. Для цього нам також потрібно встановити, Використовувати перезаписи веб-сервера - Так, з пошукових систем оптимізації

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php/admin/
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]

3

Спочатку перейдіть до системи-> конфігурація-> веб-> Оптимізація пошукових систем

І виберіть так у спадному меню Використовувати веб-сервер Переписує

Тепер перейдіть до кореня вашого сайту

Відкрийте .htaccess файл, якщо не, тоді створіть .htaccess файл

у локальному файлі цей файл приховано, тому вам потрібно показати приховані файли (ctrl + H)

Тепер, якщо ваш root у public_html /, скопіюйте цей код у .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Якщо ваш веб-сайт знаходиться в підпапці public_html / yoursite Скопіюйте цей код у .htaccess

RewriteEngine On
RewriteBase /yousite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yousite/index.php [L]

Після оновлення вашої ідеї, як і раніше не працюйте мені, міг би, будь ласка, допомогти мені @ magento.stackexchange.com/q/220973/57334
zus

2

Переконайтесь, що mod_rewrite увімкнено на вашому сервері. У моєму випадку це було відключено. Як тільки я включив його на сервері, він працює належним чином.


Як я можу перевірити, чи в моєму сервері mod_rewrite включений чи ні,
zus

2
  1. Перейдіть на кореневу папку вашого веб-сайту, і ви зможете знайти файл .htaccess. Просто відредагуйте це. Відкрийте його в текстовому редакторі і знайдіть цей рядок,

Перепишіть Base / magento /.

Just replace it with

Перепишіть базу /. Помістіть наступний код у .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>

Якщо ваш Magento встановлений у підпапці, наприклад, "shop", вам слід скористатись наступним кодом:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /shop/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /shop/index.php [L] </IfModule>
  1. Потім перейдіть на панель адміністратора та увімкніть перезапис веб-сервера. Ви можете знайти його в системі> Конфігурація> Веб> Оптимізація пошукових систем.

Тепер встановіть для параметра «Використовувати перезапис веб-сервера» в розділі «Оптимізація пошукових систем» значення «Так».

  1. Потім встановіть параметр «Використовувати захищені URL-адреси в інтерфейсі» під «Безпечним» на «Так». Натисніть кнопку «Зберегти конфігурацію» у верхньому правому куті:

  2. Потім перейдіть на сторінку керування кешами (Система> Кеш керування) та оновіть кеш, а також оновіть веб-переспрямування.


2

Мені просто довелося змінити наступний текст у файлі .htaccess в корені проекту magento:

#RewriteBase /magento/

до

RewriteBase /magento/

Примітка. Просто змініть magento з назвою вашого веб-сайту.


2

Видаліть index.php з URL-адреси, що включає внутрішні сторінки в Magento, виконавши наступні кроки:

Перевірте панель адміністратора: Використовуйте перезаписи веб-сервера 'слід встановити значення «Так» у Веб> Оптимізація пошукових систем, а потім виконайте наведені нижче дії 2 кроки.

Крок 1: --------------- Вставте цей код поверх усіх файлів макета (1 стовпець та всі інші) --------------

<?php 
$abc = Mage::helper('core/url')->getCurrentUrl();
if(strpos($abc,'index.php/') !== false) {
$pos = strpos($abc,'index.php/');
$p1 = substr($abc,0,$pos);
$p2 = substr($abc,$pos+10,strlen($abc));
$url = $p1.$p2;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
exit();
}
?>

--------------------------------- КРОК Крок 1 -------------- -------------------------

Крок 2: --------------- Вставте цей код перед "Переписати engion ON" у файл htaccess --------------

index.php для домену за замовчуванням

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)index.php$ www.abc.com [R=301,L]
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

Перенаправлення HTTP на HTTPS

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

----------------------------------- КРАЙ Крок 2 ------------ -------------------------------------

Примітка. На кроці 2 просто змініть URL-адресу свого веб-сайту. На кроці 1 не потрібно нічого робити.


1

Якщо хтось, що використовує Apache2 ubuntu 16.04 , ви не бачите файл httpd.conf ніде на сервері, тому вам потрібно перейти до шляху: / etc / apache2 / apache2.conf , ніж замінити нижче код

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

з кодом нижче:

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

Після цього перезавантажте сервер: sudo service apache2 restart


0
  • Перейдіть до системи> Конфігурація> Веб> Оптимізація пошукової системи> Використовувати перезапис веб-сервера виберіть ТАК.
  • переписати sudo a2enmod
  • перезапуск служби apache2

Ці 3 працювали на мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.