说,我的网站是:www.example.com
我有一页:www.example.com/contactus
如果我删除“www。”从上面的url,表示:example.com/contactus
它将我重定向到主页。为什么??
结帐以下.htaccess图片:
它的解决方案是什么?
答案 0 :(得分: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]
答案 1 :(得分:0)
我怀疑这与mod_rewrite无关,而是Magento本身。导航到管理员中的System->Configuration->Web
。在URL Options
下,您很可能将Auto-redirect to Base URL
设置为是。 Secure
和Unsecure
下的基本网址可能是http(s)://www.example.com/
而不是http(s)://example.com/
。通过example.com
访问商店时,它与基本网址不匹配,因此您被重定向到www.example.com
。
答案 2 :(得分:0)
问题似乎是您在管理中使用了构建magento功能“自动重定向到基本网址” - &gt;系统 - &gt;配置 - &gt;网络
但是这个功能似乎有误导性,因为它似乎没有附加url path
(仅将您重定向到基本网址http://www.site.com
而不是http://www.site.com/path/to/xyz.html
)。
因此,快速解决方法是使用.htaccess rewrite。
看一下baseUrl,它是要重定向到
的网址$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;
}
}