0

说,我的网站是:www.example.com

我有一页:www.example.com/contactus

如果我删除“www”。从上面的网址,意思是:example.com/contactus

它把我重定向到主页。为什么 ??

签出以下 .htaccess 的图片:

在此处输入图像描述

它的解决方案是什么?

4

3 回答 3

1

检查您的 .htaccess 文件是否有类似于以下内容的内容:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://your.domain.com/ [R=301,L]

您可以将第二行更改为:

RewriteRule ^(.*)$ http://your.domain.com/$1 [R=301,L]

它会改为重定向到您请求的没有“www”的任何页面,并将“www”放回前面。

如果您没有找到它,您可能在 Magento 管理员中设置了重定向,或者在您的 httpd.conf 或虚拟主机文件中设置了一些其他配置。

更新

尝试将此添加到您的 .htaccess 文件中,看看它是否可以解决您的问题(请先在开发环境中测试):

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
于 2013-03-13T15:16:05.927 回答
0

问题似乎是您在 Admin -> System -> Configuration -> Web 中使用构建 magento 功能“自动重定向到基本 URL”

在此处输入图像描述

但是这个功能似乎具有误导性,因为它似乎没有附加url path(仅将您重定向到基本 urlhttp://www.site.com而不是http://www.site.com/path/to/xyz.html)。

所以快速解决方法是使用.htaccess rewrite

看看 baseUrl 是要重定向到的 url

$baseUrl = Mage::getBaseUrl(
    Mage_Core_Model_Store::URL_TYPE_WEB,
    Mage::app()->getStore()->isCurrentlySecure()
);

....

Mage::app()->getFrontController()->getResponse()
        ->setRedirect($baseUrl, $redirectCode)
        ->sendResponse();

见/app/code/core/Mage/Core/Controller/Varien/Front.php

/**
 * Auto-redirect to base url (without SID) if the requested url doesn't match it.
 * By default this feature is enabled in configuration.
 *
 * @param Zend_Controller_Request_Http $request
 */
protected function _checkBaseUrl($request)
{
    if (!Mage::isInstalled() || $request->getPost()) {
        return;
    }

    $redirectCode = (int)Mage::getStoreConfig('web/url/redirect_to_base');
    if (!$redirectCode) {
        return;
    } elseif ($redirectCode != 301) {
        $redirectCode = 302;
    }

    if ($this->_isAdminFrontNameMatched($request)) {
        return;
    }

    $baseUrl = Mage::getBaseUrl(
        Mage_Core_Model_Store::URL_TYPE_WEB,
        Mage::app()->getStore()->isCurrentlySecure()
    );
    if (!$baseUrl) {
        return;
    }

    $uri = @parse_url($baseUrl);
    $requestUri = $request->getRequestUri() ? $request->getRequestUri() : '/';
    if (isset($uri['scheme']) && $uri['scheme'] != $request->getScheme()
        || isset($uri['host']) && $uri['host'] != $request->getHttpHost()
        || isset($uri['path']) && strpos($requestUri, $uri['path']) === false
    ) {
        Mage::app()->getFrontController()->getResponse()
            ->setRedirect($baseUrl, $redirectCode)
            ->sendResponse();
        exit;
    }
}
于 2013-03-13T16:25:46.287 回答
-1

我怀疑这与 mod_rewrite 无关,而是 Magento 本身。导航到System->Configuration->Web管理员。根据URL Options您很可能已Auto-redirect to Base URL设置为是。您的基本 URL 位于Secure并且Unsecure很可能http(s)://www.example.com/而不是http(s)://example.com/. 通过example.com它访问商店时,它与基本 URL 不匹配,因此您将被重定向到www.example.com.

于 2013-03-13T15:57:00.107 回答