Remover /index.php da URL Magento dá erro 404


26

Eu estou usando o Magento ver. 1.7.0.2

Aqui está o link para o meu site: http://dev.blokeundees.com.au/

Eu tenho que remover a /index.phppasta dos URLs, então editei o .htaccessarquivo e o back-end também (seguro, reescreve o servidor da web) e /index.phpfoi removido corretamente.

Mas ao acessar o front-end, ele retorna um erro 404 (Página não encontrada) para todas as páginas, exceto a página de índice.

Não sei por que isso está acontecendo.


Como @ lixadeira-mangel explicou verificar a sua htaccessvou acrescentar nos fornecer seu conteúdo htaccess para ter uma idéia o que está errado
Sylvain Rayé

11
Você conseguiu resolver o problema?
Sander Mangel

Respostas:


27

Como remover index.php de URLs Magento

Magento é uma plataforma fantástica para vender online, sem dúvida a melhor, mas há uma coisa que sempre me deixou frustrado como um SEO… Esse diretório index.php irritante na URL de TODAS as páginas internas - pesadelo!

Não há benefício para eles.

Eles são ruins para SEO, ruins para a estrutura e consistência do site, e depois são ainda piores para um URL limpo como um louco. Eles não são sexy o suficiente. Vamos limpar as coisas.

URLs Magento amigáveis ​​para SEO em duas etapas

Felizmente, enquanto eu fazia uma loja Magento para um cliente recentemente, pesquisei um pouco e encontrei uma solução bastante direta para o problema. Isso envolve algumas mudanças nas configurações de administrador do Magento e a adição ou modificação de um arquivo .htaccess simples para resolver a reescrita de seus URLs de loja padrão.

Siga as etapas simples abaixo e você estará um passo mais perto do sucesso do SEO com sua própria loja Magento, e seu SEO não terá desculpa para diminuir a relevância.

1) Vamos mudar uma configuração, Admin

A primeira coisa que você precisa fazer é fazer login no painel de administração do Magento (index.php / admin) para alterar uma configuração muito simples que permitirá ao Magento saber que você pretende usar a reescrita de URL em toda a sua loja, e não o padrão feio. URLs.

Faça login e altere esta configuração:

Vá para Sistema> Configuração> Web> Otimização de Mecanismo de Pesquisa

Usar regravações de servidor da Web: SIM

Isso foi fácil, não foi? Ok, agora para a etapa final.

2) Vamos usar um arquivo .htaccess para reescrever os URLs

A etapa final envolve a criação de um arquivo .htaccess na pasta de instalação do Magento, a fim de complementar as configurações que você alterou nas configurações de administrador anteriormente, e isso realmente reescreverá os URLs. Escolha a versão .htaccess aplicável abaixo.

Se sua loja Magento estiver instalada na raiz (public_html), use este:

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

Se sua loja Magento estiver instalada em uma subpasta (public_html / shop), use este:

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

Você está pronto - espero que ajude!

Definitivamente impedirá o seu SEO de arrancar os cabelos dele.

Deixe-me saber nos comentários abaixo se você usar isso ou tiver problemas!


2
Isso não funciona na minha versão do Magento, 1.9.x. Remove o index.phpURL, mas resulta em 404s à esquerda e à direita.
Desenvolvedor de

10

Certifique-se de ter um .htaccessarquivo de trabalho ; opcionalmente, você pode obtê-lo em um novo download da versão Magento.

Verifique também se mod_rewriteestá ativado no seu servidor. Isso pode ser feito lendo o phpinfo();script de no seu servidor. Esta postagem do Stackoverflow mostra como.


Além disso, você precisa ter certeza de que Sistema -> Configuração -> Web -> Configuração dos mecanismos de pesquisa -> Usar reconfigurações do servidor da Web está ativado.
Barbanet 19/05

Trabalho e arquivo gravável .htaccess .
Raptor

6

Para remover index.phpdos URLs, siga as etapas abaixo:

  1. Faça login no Magento Admin
  2. Vamos para System -> Configuration -> Web
  3. Na guia Otimização do mecanismo de pesquisa, use Reescrições do servidor Web e selecione SIM .
  4. Certifique-se de que os URLs base seguros e não seguros devem terminar com "/" .
  5. Agora edite seu .htaccess(estará na pasta raiz do magento) e cole o código que é fornecido neste link

5

Você não precisa alterar além dos seguintes pontos. basta fazer essas duas configurações e você ficará bem. em Sistema -> Configuração -> Web -> Otimizações de Mecanismos de Pesquisa, selecione SIM.

E em Sistema -> Configuração -> Web -> Seguro -> Use URLs seguros no frontend, selecione SIM. Atualize seu cache, se o problema persistir, siga o seguinte no arquivo httpd.config. AllowOverride None altere para AllowOverride All Tudo ficará OK agora


No meu httpd.config, não há nenhuma linha como, AllowOverride None,. então como eu posso mudar AllowOverride All
ZUS

3

Principalmente, quando trabalhamos no WAMP / XAMPP, precisamos:

1) para verificar se rewrite_module foi ativado

por exemplo, quando instalamos o wampp em C: \ wamp, podemos encontrar o httpd.conf em C: \ wamp \ bin \ apache \ apache2.4.9 \ conf e habilitá-lo removendo # sign

LoadModule rewrite_module modules/mod_rewrite.so

2) para ativar o RewriteBase

por exemplo, quando instalamos o magento v1.9 em C: \ wamp \ www \ magento, precisamos editar o arquivo .htaccess padrão na pasta raiz do magento para

RewriteBase /magento/

Além disso, precisamos ativar a regra de reescrita padrão removendo o sinal #

RewriteRule .* index.php [L]

3) em Sistema -> Configuração -> Web -> Otimizações de Mecanismos de Pesquisa, selecione SIM.

E em Sistema -> Configuração -> Web -> Seguro -> Use URLs seguros no frontend, selecione SIM.

Quando trabalhamos no servidor LAMP, é semelhante que precisamos verificar todos os itens acima para permitir que o módulo de reescrita funcione, embora haja muitas diferenças nos detalhes.


3

Solução de trabalho para remover o index.php do URL, excluindo Admin. E se alguém colocar o index.php no URL, ele será redirecionado para o URL que não contém o index.php. Para isso, também precisamos definir: Usar regravações de servidor da Web - Sim na otimização de mecanismos de pesquisa

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

3

Primeiro, vá para sistema-> configuração-> web-> Otimização de Mecanismos de Pesquisa

E selecione sim no menu suspenso Usar reescrições de servidor Web

Agora vá para a raiz do site

Abra o arquivo .htaccess, caso contrário, crie o arquivo .htaccess

no local, esse arquivo está oculto; portanto, você precisa mostrar os arquivos ocultos (ctrl + H)

Agora, se sua raiz em public_html / copia esse código em .htaccess

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

Se o seu site estiver em uma subpasta public_html / yoursite Copie este código em .htaccess

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

Após atualização sua idéia, ainda não funciona comigo, poderia u pls help me @ magento.stackexchange.com/q/220973/57334
ZUS

2

Verifique se o mod_rewrite está ativado no seu servidor. No meu caso, foi desativado. Depois de ativá-lo no servidor, ele está funcionando corretamente.


Como posso me verificar se mod_rewrite habilitado ou não no meu servidor,
ZUS

2
  1. Vá para a pasta raiz do site e você pode encontrar o arquivo .htaccess. Apenas edite isso. Abra-o em um editor de texto e encontre esta linha,

Reescreva Base / magento /.

Just replace it with

Reescreva a Base /. Coloque o seguinte código no arquivo .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>

Caso seu Magento esteja instalado na subpasta, por exemplo, 'shop', você deve usar o seguinte código:

<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. Em seguida, vá para o painel de administração e ative as regravações do servidor da Web. Você pode encontrá-lo em Sistema> Configuração> Web> Otimização de mecanismo de pesquisa.

Agora defina a opção "Usar regravações do servidor da Web" em "Otimização de mecanismos de pesquisa" para "Sim".

  1. Em seguida, defina a opção "Usar URLs seguros no front-end" em "Seguro" para "Sim". Clique no botão "Salvar configuração" no canto superior direito:

  2. Vá para a página Gerenciamento de cache (Sistema> Gerenciamento de cache) e atualize seu cache, além de atualizar os redirecionamentos da Web.


2

Eu apenas tive que mudar o seguinte texto no arquivo .htaccess na raiz do projeto magento:

#RewriteBase /magento/

para

RewriteBase /magento/

Nota: basta alterar o magento com o nome do seu site.


2

Remova o index.php da URL, incluindo páginas internas no Magento, usando as seguintes etapas:

Verifique o painel de administração: Use Web Server Rewrites 'deve ser definido como' Yes ​​'em Web> Search Engines Optimization e siga as etapas abaixo.

Etapa 1: --------------- Insira esse código sobre todos os arquivos de layout (1coluna e todos os outros) --------------

<?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();
}
?>

--------------------------------- FIM Etapa 1 -------------- -------------------------

Etapa 2: --------------- Insira este código antes de 'Reescrever engion ON' no arquivo htaccess --------------

index.php no domínio padrão

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

Redirecionamento de HTTP para 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]

----------------------------------- FIM Etapa 2 ------------ -------------------------------------

Nota: Na etapa 2, basta alterar o URL do seu site. Não precisa fazer nada na etapa 1.


1

Se alguém usando o Apache2 ubuntu 16.04 , você não vê o arquivo httpd.conf em nenhum lugar do servidor, então você precisa ir para o caminho: / etc / apache2 / apache2.conf , que substitui o código abaixo

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

com o código abaixo:

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

Depois disso, reinicie o servidor: sudo service apache2 restart


0
  • Vá para Sistema> Configuração> Web> Otimização de Mecanismo de Pesquisa> Usar Reescrições de Servidor da Web, selecione SIM.
  • reescrever sudo a2enmod
  • reinicialização do serviço apache2

Estes 3 funcionaram para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.