我正在使用Magento ver。1.7.0.2。
这是我网站的链接:http : //dev.blokeundees.com.au/
我必须/index.php
从URL中删除该文件夹,所以我也编辑了.htaccess
文件和后端(安全,Web服务器被重写),/index.php
并且已正确删除。
但是,当访问前端时,它为除索引页面之外的所有页面返回404错误(找不到页面)。
我不知道为什么会这样。
我正在使用Magento ver。1.7.0.2。
这是我网站的链接:http : //dev.blokeundees.com.au/
我必须/index.php
从URL中删除该文件夹,所以我也编辑了.htaccess
文件和后端(安全,Web服务器被重写),/index.php
并且已正确删除。
但是,当访问前端时,它为除索引页面之外的所有页面返回404错误(找不到页面)。
我不知道为什么会这样。
Answers:
如何从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拔出他或她的头发。
如果您使用此功能或遇到任何问题,请在下面的评论中让我知道!
index.php
从网址中删除,但导致404左右。
确保您具有工作.htaccess
文件,可以选择从全新的Magento版本下载中获取文件。
还要检查mod_rewrite
服务器上是否启用了该功能。这可以通过phpinfo();
从服务器上的脚本读取来完成。这篇Stackoverflow帖子告诉您如何。
.htaccess
文件。
要从index.php
网址中删除,请执行以下步骤:
System -> Configuration -> Web
.htaccess
(将在magento根文件夹中)并粘贴在此链接中给出的代码 除以下几点外,您无需更改。只需做这两个设置,您就可以了。在系统->配置->网络->搜索引擎优化中,选择是。
在前端的系统->配置-> Web->安全->使用安全URL中,选择是。如果仍然遇到问题,请刷新httpd.config文件中的缓存。将AllowOverride无更改为AllowOverride All全部现在都可以
通常,当我们在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服务器中工作时,类似地,我们需要检查所有上述项目以使重写模块能够工作,以为应该有许多细节上的差异。
首先去系统->配置->网站-> 搜索引擎优化
并在“使用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]
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>
现在,将“搜索引擎优化”下的“使用Web服务器重写”选项设置为“是”。
然后,将“安全”下的“ 在前端使用安全URL”选项设置为“是”。点击右上角的“保存配置”按钮:
然后转到“缓存管理”页面(“系统”>“缓存管理”),刷新缓存,并刷新Web重定向。
使用以下步骤从包括内页的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文件中--------------
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)index.php$ www.abc.com [R=301,L]
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]
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中无需执行任何操作。
如果有人使用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
htaccess
我将为您提供htaccess内容,以了解发生了什么问题