Вопрос по e-commerce, magento, .htaccess, url-rewriting – Как удалить index.php из URL?

30

Все мои URL-адреса в моей установке Magento требуют index.php, например:

<code>http://example.com/index.php/admin/
http://example.com/index.php/customer/account/login/
</code>

Проблема в том, что система по умолчанию ссылается на URL-адреса вроде

<code>http://example.com/admin/
http://example.com/customer/account/login/
</code>

Который в любом случае выглядит красивее. Я полагаю, что это проблема переписывания в .htaccess, но так как в прошлом я получил 500 с, я хотел бы сначала спросить вас, ребята.

Изменение настроек SEO, очистка кеша конфигурации и переиндексация URL не работаликак предложено здесь.

Ваш Ответ

8   ответов
9

чтобы заставить работать чистые URL

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

sudo a2enmod rewrite
sudo apache2ctl -l

Вам необходимо заменить вхождениеAllowOverride none вAllowOverride all (в / etc / apache2 / sites-enabled / 000-default)

Перезапустите Apache

sudo service apache2 restart

В админке Magento перейдите наSystem > Configuration > Web > search engine Optimization и изменить & # x201C;Use Web Server Rewrites& # X201D; да

все еще это не работает.
Это решило мою проблему со стандартным конфигом .htaccess
Для будущих читателей: моя проблема возникла из-за по умолчанию & quot; AllowOverride & quot; устанавливается наNone - должно быть установленоAll (для наименее хлопотного опыта).
1

Затем я изменил фрагмент .htaccess, который Эрджаб выложил так:

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

Вышеуказанная строка исправила это для меня. где * имя_папки * - корневая папка magento.

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

2

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

У меня был установлен сервер Ubuntu с Apache, MySql и Php, поэтому я подумал, что могу перейти к заголовкуCreating the directory from which Magento will be served from и я достиг той же проблемы, что и OP, то есть у меня был «index.php»; необходимо во всех URL (или я бы получил 404 не найден). Затем я вернулся кInstalling and configuring the Apache HTTP server и после перезапуска apache работает отлично.

Для справки мне не хватало:

sudo bash -c "cat >> /etc/apache2/conf.d/servername.conf <<EOF
ServerName localhost
EOF"

... а также

sudo a2enmod rewrite
sudo service apache2 restart

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

86

Так или иначе, я сделал это так.

---------- & GT;

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

1) Войдите в свою администрацию Magento, затем перейдите наSystem > Configuration > Web.

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

3) Пока еще наWeb страницы, перейдите кSearch Engine Optimisation вкладка и выберитеYES подUse Web Server Rewrites вариант.

4) Перейдите кSecure Снова нажмите вкладку (если ее еще нет) и выберитеYes наUse Secure URLs in 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 и замените оригинальный файл.(PLEASE MAKE SURE TO BACKUP YOUR ORIGINAL .htaccess FILE BEFORE MESSING WITH IT!!!)

6) Теперь перейдите кSystem > Cache Management и выберите все поля и убедитесь, чтоActions раскрывающийся список включенRefresh, затем отправьте. (Это, конечно, освежит кеш.)

---------- & GT;

Если это не помогло, выполните следующие дополнительные действия.

7) Перейти кSystem > Configuration > web снова. На этот раз ищемCurrent Configuration Scope и выберите свой сайт из выпадающего меню. (Это, конечно, установлено по умолчанию Config)

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

9) Перейдите кSearch Engines Optimisation вкладка и выберитеYes подUse Web Server Rewrites раздел.

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

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

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

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

Имеет ли значение порядок строк?
Я бы проголосовал за этот ответ 10 раз, если бы мог: D Спасибо @Blowtar!
это потрясающе .. чувак upvote для вас
УдостоверитьсяAllowOverride All для вашей конфигурации включен, иначе ваш файл .htaccess будет игнорироваться.
реAllowOverride All в последних версиях Ubuntu, по крайней мере, это добавлено к/etc/apache2/apache2.conf <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> Чем перезапустить Apache:/etc/init.d/apache2 restart
1

если вы используете Linux-систему, подобную «Ubuntu». и это предлагается только для локального пользователя, а не для сервера.

Выполните все шаги, упомянутые в предыдущих ответах. +

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

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

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

enter image description here

Я добавляю точные строки из моего файла 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]

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

enter image description here

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

Step 1: (если ваша установка находится в webroot)

замещать

    #RewriteBase /magento/

с

    RewriteBase /

Step 2:

Добавьте следующие строки (включительно исключите admin, потому что внутреннему серверу нужен 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-> Search Engine Optimization. Перезаписи должны быть включены.

7

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Без изменений вообще. Magento хранит свой доступ наvar/.htaccess хотя & # x2014; это будет проблемой? delwin
Magento магазиныone из его файлов htaccess в var / .htaccess есть несколько в его деревьях каталогов для предотвращения удаленного компрометации или чтения привилегированных местоположений. У вас должен быть один в корневом каталоге вашего сервера.
25

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

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

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

Вы редактируете комментарий ... бесполезно.
@MaherAbuthraa Я думаю, что просто косая черта (/) является поведением Apache по умолчанию. Таким образом, нет необходимости добавлять эту строку, если вы не используете подкаталог для вашей установки magento.
у меня работает после активации команды (удалить #)
Вы меняете комментарий на шаге 1 - вообще не имеет смысла

Похожие вопросы