说,我的网站是:www.example.com
我有一页:www.example.com/contactus
如果我删除“www”。从上面的网址,意思是:example.com/contactus
它把我重定向到主页。为什么 ??
签出以下 .htaccess 的图片:
它的解决方案是什么?
说,我的网站是:www.example.com
我有一页:www.example.com/contactus
如果我删除“www”。从上面的网址,意思是:example.com/contactus
它把我重定向到主页。为什么 ??
签出以下 .htaccess 的图片:
它的解决方案是什么?
检查您的 .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]
问题似乎是您在 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;
}
}
我怀疑这与 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
.