30

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

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

问题是系统默认链接到 URL,例如

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

反正哪个看起来更漂亮。我认为这是 .htaccess 中的重写问题,但由于过去修补这个问题给了我 500 多分,我想先问问你们。

更改 SEO 设置、刷新配置缓存和重新索引 URL 没有按照这里的建议工作。

4

8 回答 8

86

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

---------->

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

1) 登录到您的 Magento 管理区域,然后转到System > Configuration > Web

2) 导航到不安全安全选项卡。确保Unsecured and Secure - Base Url选项中包含您的域名,并且不要在 URL 末尾留下正斜杠。示例:http ://www.yourdomain.co.uk/

3) 仍在网页上时,导航到Search Engine Optimization选项卡并在Use Web Server Rewrites选项下选择YES

4) 再次导航到“安全”选项卡(如果还没有的话)并在“在前端使用安全 URL”选项上选择“是” 。

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) 现在转到System > Cache Management并选择所有字段并确保Actions下拉菜单设置为Refresh,然后提交。(这当然会刷新缓存。)

---------->

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

7)再次进入系统 > 配置 > 网络。这次查找当前配置范围并从下拉菜单中选择您的网站。(这个当然是设置为Default Config)

8) 确保UnsecureSecure字段包含与之前的默认配置文件相同的域。

9) 导航到Search Engines Optimization选项卡并在Use Web Server Rewrites部分下选择Yes 。

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

11) 重复步骤 6。

现在你的 index.php 问题应该已经解决了,一切都很好!!!

我希望这个帮助能祝你好运。

于 2013-03-19T16:23:22.023 回答
23

请按照以下步骤操作,它将对您有所帮助。

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

第 2 步:然后转到您的管理面板并启用重写(为使用 Web 服务器重写设置为是)。您可以在 System->Configuration->Web->Search Engine Optimization 中找到它。

步骤3:然后进入缓存管理页面(系统缓存管理)并刷新您的缓存并刷新以检查站点。

于 2012-05-09T07:21:05.747 回答
9

您必须在 apache 中启用 mod_rewrite 才能使干净的 url 工作

如果 mod_rewrite 不在 phpinfo 中,则必须通过

sudo a2enmod rewrite
sudo apache2ctl -l

您需要替换出现的AllowOverride noneto AllowOverride all(在 /etc/apache2/sites-enabled/000-default 中)

重启阿帕奇

sudo service apache2 restart

在 Magento 的管理员中System > Configuration > Web > search engine Optimization,将“<code>Use Web Server Rewrites”更改为 Yes

于 2012-11-12T07:21:22.627 回答
7

在您的 .htaccess 中如何处理:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2012-05-06T22:26:12.023 回答
2

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

我安装了带有 Apache、MySql 和 Php 的 Ubuntu 服务器,所以我想我可以跳转到标题创建将提供 Magento 的目录,我遇到了与 OP 相同的问题,即我需要 'index.php'所有的 URL(或者我会得到 404 not found)。然后我回到安装和配置 Apache HTTP 服务器,重新启动 apache 后它运行良好。

作为参考,我错过了:

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

... 和

sudo a2enmod rewrite
sudo service apache2 restart

希望这可以帮助

于 2013-02-28T12:34:58.023 回答
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 配置:系统->配置->Web->搜索引擎优化。必须启用重写。

于 2015-12-02T14:59:52.567 回答
1

我尝试了帖子上的所有内容,但没有任何效果。然后我更改了 ErJab 提供的 .htaccess 片段以阅读:

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

上面的行为我修复了它。其中 *folder_name* 是 magento 根文件夹。

希望这可以帮助!

于 2012-11-14T14:02:01.860 回答
1

主要是如果您使用的是基于 Linux 的系统,例如“Ubuntu”,并且仅建议 localhost 用户而不是服务器。

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

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

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

让我知道这一步是否对任何人有帮助。因为如果你早点找到它可以节省你的时间。

在此处输入图像描述

我正在从本地主机中的 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]

图像适用于一些从图像中轻松理解文本的用户:

在此处输入图像描述

于 2016-05-11T07:38:30.530 回答