从Magento URL中删除/index.php会出现404错误


26

我正在使用Magento ver。1.7.0.2。

这是我网站的链接:http : //dev.blokeundees.com.au/

我必须/index.php从URL中删除该文件夹,所以我也编辑了.htaccess文件和后端(安全,Web服务器被重写),/index.php并且已正确删除。

但是,当访问前端时,它为除索引页面之外的所有页面返回404错误(找不到页面)。

我不知道为什么会这样。


正如@ sander-mangel解释说的那样,请检查您的信息,htaccess我将为您提供htaccess内容,以了解发生了什么问题
SylvainRayé2014年

1
您设法解决了这个问题吗?
桑德·曼格尔

Answers:


27

如何从Magento URL删除index.php

Magento是一个绝佳的在线销售平台,可以说是最好的平台,但是有一件事让我一直对SEO感到沮丧……所有内部页面URL中的那个讨厌的index.php目录–噩梦!

对他们没有好处。

它们对SEO不利,对网站结构和一致性不利,然后对像我这样的干净URL怪胎甚至更不利。他们不够性感。让我们清理一下。

两步实现SEO友好的Magento URL

幸运的是,当我最近为客户做Magento商店时,我做了一些挖掘工作,发现了一个非常简单的解决方案。它涉及对Magento管理员设置的几处更改,以及对简单的.htaccess文件的添加或修改,以整理其标准商店URL的内容。

遵循以下简单步骤,通过自己的Magento商店,您将更接近SEO成功,并且您的SEO不会成为降低相关性的借口。

1)让我们更改设置,管理员

您需要做的第一件事是登录您的Magento管理面板(index.php / admin),以更改一个非常简单的设置,该设置将使Magento知道您打算在整个商店中使用URL重写,而不是其丑陋的默认设置网址。

登录,然后更改此设置:

转到系统>配置>网站>搜索引擎优化

使用Web服务器重写:是

那很容易,不是吗?好的,现在进入最后一步。

2)让我们使用.htaccess文件重写URL

最后一步涉及在Magento安装文件夹中创建一个.htaccess文件,以补充您先前在管理设置中更改的设置,这实际上将重写URL。在下面选择适用的.htaccess版本。

如果您的Magento商店安装在根目录(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从网址中删除,但导致404左右。
夏季开发者

10

确保您具有工作.htaccess文件,可以选择从全新的Magento版本下载中获取文件。

还要检查mod_rewrite服务器上是否启用了该功能。这可以通过phpinfo();从服务器上的脚本读取来完成。这篇Stackoverflow帖子告诉您如何。


另外,您还需要确保已启用系统->配置-> Web->搜索引擎配置->使用Web服务器重写。
Barbanet

工作和可写 .htaccess文件。
猛禽2014年

6

要从index.php网址中删除,请执行以下步骤:

  1. 登录Magento管理员
  2. System -> Configuration -> Web
  3. 在“ 搜索引擎优化”选项卡的“ 使用Web服务器重写”中选择“是”
  4. 确保您的安全不安全基本URL应当以“ /”结尾。
  5. 现在编辑您的.htaccess(将在magento根文件夹中)并粘贴在此链接中给出的代码

5

除以下几点外,您无需更改。只需做这两个设置,您就可以了。在系统->配置->网络->搜索引擎优化中,选择是。

在前端的系统->配置-> Web->安全->使用安全URL中,选择是。如果仍然遇到问题,请刷新httpd.config文件中的缓存。将AllowOverride无更改为AllowOverride All全部现在都可以


在我的httpd.config中,没有类似AllowOverride None的行。那我该如何更改AllowOverride All
zus'Apr

3

通常,当我们在WAMP / XAMPP中工作时,我们需要:

1)检查rewrite_module是否已启用

例如,当我们在C:\ wamp中安装wampp时,我们可以在C:\ wamp \ bin \ apache \ apache2.4.9 \ conf中找到httpd.conf并通过删除#号将其启用

LoadModule rewrite_module modules/mod_rewrite.so

2)启用RewriteBase

例如,当我们在C:\ wamp \ www \ magento中安装magento v1.9时,我们需要将magento根文件夹中的默认.htaccess编辑为

RewriteBase /magento/

而且,我们需要通过删除#符号来启用默认的重写规则

RewriteRule .* index.php [L]

3)在系统->配置->网络->搜索引擎优化中,选择是。

在前端的系统->配置-> Web->安全->使用安全URL中,选择是。

当我们在LAMP服务器中工作时,类似地,我们需要检查所有上述项目以使重写模块能够工作,以为应该有许多细节上的差异。


3

从除Admin之外的URL中删除index.php的有效解决方案,如果有人将index.php放入URL,它将重定向到不包含index.php的URL。为此,我们还需要设置“使用Web服务器重写-是来自搜索引擎优化”

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

3

首先去系统->配置->网站-> 搜索引擎优化

并在“使用Web服务器重写”下拉列表中选择“ 是”

现在转到您的站点根目录

如果没有打开.htaccess文件,然后创建.htaccess文件

在本地,此文件是隐藏的,因此您需要显示隐藏的文件(ctrl + H)

现在,如果您的根位于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]

更新您的想法后,仍然无法解决
zus


2
  1. 转到您的站点根文件夹,您可以找到.htaccess文件。只需编辑。在文本编辑器上将其打开,然后找到这一行,

重写Base / magento /。

Just replace it with

重写Base /。将以下代码放入.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. 然后转到管理面板并启用Web服务器重写。您可以在系统>配置> Web>搜索引擎优化中找到它。

现在,将“搜索引擎优化”下的“使用Web服务器重写”选项设置“是”。

  1. 然后,将“安全”下的在前端使用安全URL”选项设置为“是”。点击右上角的“保存配置”按钮:

  2. 然后转到“缓存管理”页面(“系统”>“缓存管理”),刷新缓存,并刷新Web重定向。


2

我只需要更改magento项目根目录下的.htaccess文件中的以下文本:

#RewriteBase /magento/

RewriteBase /magento/

注意:只需使用您的网站名称更改magento。


2

使用以下步骤从包括内页的URL中删除index.php到Magento:

检查管理面板:应该在“ Web”>“搜索引擎优化”中将“使用Web服务器重写”设置为“是”,然后按照以下两个步骤进行操作。

步骤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步:---------------在“重写引擎打开”之前将此代码插入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
  • 转到系统>配置> Web>搜索引擎优化>使用Web服务器重写选择是。
  • sudo a2enmod重写
  • 服务apache2重新启动

这三个为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.