magento - 更改所有链接的URL

时间:2015-01-27 22:09:16

标签: php .htaccess magento phpmyadmin e-commerce

适用于

http://localhost.magento-store.com/index.php/fashion.html

但我需要它

http://localhost.magento-store.com/fashion.html
  • .htaccess文件包含

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /magento-store.com/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /magento-store.com/index.php [L]
    </IfModule>
    
  • 数据库中的基本网址为http://localhost.magento-store.com/

  • 管理员面板: SEO-&GT; Web服务器重写:是的 在前端使用安全网址:是

该怎么做?

2 个答案:

答案 0 :(得分:1)

服务器是否正在应用.htaccess文件?您可以通过在.htaccess文件中引入语法错误并查看服务器是否返回500 Internal Server Error来对此进行测试。如果您没有收到错误消息,那么您的.htaccess文件就无法应用。这通常是由于服务器配置中的AllowOverride指令。尝试为您的DocumentRoot目录添加AllowOverride All。请注意,这必须在服务器配置中完成,因此请勿将其放入.htaccess

如上所述,请删除RewriteBase指令(或将其设置为/而不是/magento-store.com/),并从/magento-store.com/指令中删除RewriteRule 。如果http://localhost.magento-store.com/index.php/工作正常,那么您的DocumentRoot必须与index.php文件位于同一目录中,因此您不希望为index.php文件指定目录

作为参考,这里是Magento样本.htaccess文件的精简版:

<IfModule mod_rewrite.c>

############################################
## enable rewrites

    Options +FollowSymLinks
    RewriteEngine on

############################################
## rewrite API2 calls to api.php (by now it is REST only)

    RewriteRule ^api/rest api.php?type=rest [QSA,L]

############################################
## workaround for HTTP authorization
## in CGI environment

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

############################################
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks

    RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
    RewriteRule .* - [L,R=405]

############################################
## always send 404 on missing files in these folders

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################
## never rewrite for existing files, directories and links

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

############################################
## rewrite everything else to index.php

    RewriteRule .* index.php [L]

</IfModule>

答案 1 :(得分:0)

请检查您的apache服务器 rewrite_module 是否启用。