如何从URL中删除index.php?

时间:2012-05-06 22:14:42

标签: .htaccess magento url-rewriting e-commerce

我的Magento安装中的所有网址都需要index.php,例如:

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

问题是系统默认链接到

这样的网址
http://example.com/admin/
http://example.com/customer/account/login/

无论如何看起来更漂亮。我认为这是.htaccess中的重写问题,但由于过去修补过程给了我500分,我想先问你们。

更改SEO设置,刷新配置缓存以及重新索引网址不起作用as suggested here

8 个答案:

答案 0 :(得分:86)

这可能是旧的,但我也可以写下我学到的东西。 所以无论如何我都是这样做的。

---------->

在开始之前,请确保已启用Apache重写模块,然后按照以下步骤操作。

1)登录您的Magento管理区域,然后转到系统>配置>网络即可。

2)导航至不安全安全标签。确保不安全安全 - 基本网址选项中包含您的域名,并且不要在结尾处保留正斜杠URL。示例:http://www.yourdomain.co.uk/

3)仍在网络页面上,导航至搜索引擎优化标签,然后在使用网络服务器下选择重写选项。

4)再次导航到安全标签(如果尚未登录),然后在使用前端安全网址中选择 >选项。

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并替换原始文件。 (请确保在使用之前备份您的原始.htaccess文件!!!)

6)现在转到系统&gt;缓存管理并选择所有字段,并确保在刷新上设置操作下拉列表,然后提交。 (这当然会刷新缓存。)

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

如果这不起作用,请按照这些额外步骤进行操作。

7)转到系统&gt;配置&gt;网页再次。这次查找当前配置范围,然后从下拉菜单中选择您的网站。 (当然,这是设置为默认配置)

8)确保不安全安全字段包含与先前默认配置文件相同的域。

9)导航至搜索引擎优化标签,然后选择使用Web服务器重写部分下的

10)一旦URL相同,并且启用了重写保存该页面,然后返回并确保它们都被默认选中,然后在需要时再次保存。

11)重复步骤6.

现在你的index.php问题应该修复,一切都应该好!!!!

我希望这会有所帮助,祝你好运。

答案 1 :(得分:25)

按照以下步骤,它可以帮助您。

第1步:转到您的站点根文件夹,您可以在那里找到.htaccess文件。使用文本编辑器打开它,找到行#RewriteBase /magento/。只需将其替换为#RewriteBase /,只需取出“magento /”

即可

步骤2:然后转到管理面板并启用重写(为使用Web服务器重写设置)。您可以在System-&gt; Configuration-&gt; Web-&gt; Search Engine Optimization。

中找到它

步骤3:然后转到缓存管理页面(系统缓存管理)并刷新缓存并刷新以检查网站。

答案 2 :(得分:9)

你必须在apache中启用mod_rewrite才能使干净的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并将“Use Web Server Rewrites”更改为是

答案 3 :(得分:7)

你的.htaccess如何:

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

答案 4 :(得分:2)

嗨,我迟到了。只是想指出http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/的说明非常有用。

我安装了Apache,MySql和Php的Ubuntu服务器,所以我想我可以跳转到标题创建Magento服务的目录,我遇到了与OP相同的问题,即我在所有网址中都需要'index.php'(或者我找不到404)。然后我回到安装和配置Apache HTTP服务器,重新启动apache后,它运行正常。

作为参考,我失踪了:

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

...和

sudo a2enmod rewrite
sudo service apache2 restart

希望这有帮助

答案 5 :(得分:2)

如果其他解决方案不适合您,请尝试以下方法:

第1步:(如果您的安装位于webroot中)

替换

    #RewriteBase /magento/

    RewriteBase /

第2步:

添加以下行(包括排除管理员,因为后端需要在内部使用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配置: 系统 - &gt;配置 - &gt; Web-&gt;搜索引擎优化。必须启用重写。

答案 6 :(得分:1)

我在帖子上尝试了一切,但没有任何效果。 然后我改变了ErJab提出的.htaccess片段:

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

以上一行为我修好了。其中* folder_name *是magento根文件夹。

希望这有帮助!

答案 7 :(得分:1)

主要是如果您使用的是基于Linux的系统,请使用“Ubuntu”,这仅适用于localhost用户而不是服务器。

按照前面答案中提到的所有步骤操作。 +

检查Apache配置。 (AllowOverride All) 如果AllowOverride值为none,则将其更改为All并再次重新启动apache。

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

如果此步骤可以帮助我,请告诉我。因为如果你早点发现它可以节省你的时间。

enter image description here

我在localhost中添加了htaccess文件中的确切行。 供您参考

第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