没有index.php,除主页之外的Magento URL不起作用

use*_*429 19 templates url-rewriting magento

我的magento安装在/ var/www/magento下的Ubuntu Linux上.这个问题看起来像是档案中的一些问题,但实际上有些不同.当我在Ubuntu Linux上安装Magento时,我启用了Apache mod_rewrite URL重写.

当我转到http:// localhost/magento时,我的服务器将URL重写为http:// localhost/magento /并显示该页面.然后我点击导航栏中的一个链接,让我们说它是导航栏项"foo".然后magento带我去:

http:// localhost/magento/foo.html

它显示"未找到"的apache页面.

我必须将URL更改为----->

http:// localhost/magento/index.php/foo.html

为了显示页面.

就好像我的mod_rewrite工作中有些不对劲.

谢谢,

约翰戈切

配置:系统 - >配置 - >(常规 - >)Web:

使用Web服务器重写:是

基本URL:http:// localhost/magento

如果我将"User Web Server Rewrites:"设置为NO,那么来自我的主页的链接工作正常,但是请参阅页面http:// localhost/magento/index.php/foo.html,它显示正确的页面,但是网站的作品我不喜欢这个网址.我希望它是没有index.php位的http:// localhost/magento/foo.html,因为这也可能更适合搜索引擎优化.

谢谢,

约翰戈切


更新:我已经尝试取消注释我的人工127.0.1.1 IP地址,ubuntu已经放入/ etc/hosts并放置了我真正的IP但没有运气.我仍然有完全相同的问题.当我在其中键入192.168.3.31,avalanche或avalanche.com时,浏览器中的URL将被重写为http:// localhost/etc ... 我仍在试图弄清楚如何解决上述问题,因为这没有做到.

127.0.0.1       localhost
#127.0.1.1      avalanche

192.168.4.35    avalanche avalanche.com
Run Code Online (Sandbox Code Playgroud)

当我重新启动Apache时,我得到:

# service apache2 restart
 * Restarting web server apache2                                                apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName
Run Code Online (Sandbox Code Playgroud)

不确定如何解决原始问题.我正在本地服务器上测试.


我甚至试过这个解决方案,然后重新启动了apache2,但没有运气!

如何从URL中删除index.php?

所以放置:

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

不起作用,即使使用RewriteBase /,它也不起作用.


好的,最后我设法解决了问题.文件/ etc/apache2/sites-enabled/000-default为此文件中定义的所有目录设置了以下指令:

 AllowOverride None
Run Code Online (Sandbox Code Playgroud)

例如,对于/ var/www这是在Ubuntu 12.04 LTS Linux系统上设置的默认文档根目录,该文件包含

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
Run Code Online (Sandbox Code Playgroud)

据我所知,这意味着在此目录中找到的.htaccess文件及其所有子目录都不会被解析.要解决此问题,只需设置:

AllowOverride All
Run Code Online (Sandbox Code Playgroud)

这意味着您将能够覆盖/etc/apache2/apache2.conf(或其中包含的/etc/apache2/httpd.conf)中的服务器配置指令.

默认情况下,AllowOverride设置为None的原因之一可能是它会降低服务器速度,另一个原因是出于安全原因.该指令应设置在标签内,后者可以覆盖前者.默认情况下未设置的另一个原因是,每次加载目录路径中的文件时,必须在站点间递归地解析.htaccess会降低系统速度,从而将.htaccess内容放在/etc/apache2/httpd.conf中尽可能推荐,因为它可能会导致速度增加.

所以放置

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            #AllowOverride None
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
Run Code Online (Sandbox Code Playgroud)

在/ etc/apache2/sites-enabled/000-default中

并运行:service apache2 restart

是解决方案.

Syl*_*ayé 19

你试过了吗:

RewriteBase /magento/
Run Code Online (Sandbox Code Playgroud)

而不是RewriteBase/mymagento /,因为你的网址是http:// localhost/magento /

您的apache虚拟主机是否允许覆盖配置,例如

<VirtualHost *:80>
...
<Directory /var/www/magento/>
    AllowOverride All
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

46283 次

最近记录:

11 年,2 月 前