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,但没有运气!
所以放置:
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 次 |
| 最近记录: |