2012-02-06 69 views
1

我有一个产品页面加载罚款,当我输入www与www(www.domain.com/product),但是当我没有,它重定向到主页(domain.com/product - > www.domain.com)。我正在使用Magento。强制www重定向到主页,htaccess错误

我一直在寻找,并试图htaccess的方法,所有的其他线程提到,但无济于事:

############################################ 
## 301 the url for SEO 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.example\.com$ 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,L] 

Redirect 301 /home http://www.example.com/ 
############################################ 

当我添加这个,我要么看不到任何变化或整个网站有下降500错误:重写太多。

我的主域可以使用或不使用www。这是我的htaccess的样子:

############################################ 
## uncomment these lines for CGI mode 
## make sure to specify the correct cgi php binary file name 
## it might be /cgi-bin/php-cgi 

# Action php5-cgi /cgi-bin/php5-cgi 
# AddHandler php5-cgi .php 

############################################ 
## GoDaddy specific options 

# Options -MultiViews 

## you might also need to add this line to php.ini 
##  cgi.fix_pathinfo = 1 
## if it still doesn't work, rename php.ini to php5.ini 

############################################ 
## this line is specific for 1and1 hosting 

#AddType x-mapp-php5 .php 
#AddHandler x-mapp-php5 .php 

############################################ 
## default index file 

DirectoryIndex index.php 

<IfModule mod_php5.c> 

############################################ 
## adjust memory limit 

# php_value memory_limit 64M 
php_value memory_limit 256M 
php_value max_execution_time 18000 

############################################ 
## disable magic quotes for php request vars 

php_flag magic_quotes_gpc off 

############################################ 
## disable automatic session start 
## before autoload was initialized 

php_flag session.auto_start off 

############################################ 
## enable resulting html compression 

php_flag zlib.output_compression on 

########################################### 
# disable user agent verification to not break multiple image upload 

php_flag suhosin.session.cryptua off 

########################################### 
# turn off compatibility with PHP4 when dealing with objects 

php_flag zend.ze1_compatibility_mode Off 

</IfModule> 

<IfModule mod_security.c> 
########################################### 
# disable POST processing to not break multiple image upload 

SecFilterEngine Off 
SecFilterScanPOST Off 
</IfModule> 

<IfModule mod_deflate.c> 

############################################ 
## enable apache served files compression 
## http://developer.yahoo.com/performance/rules.html#gzip 

# Insert filter on all content 
###SetOutputFilter DEFLATE 
# Insert filter on selected content types only 
#AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript 

# Netscape 4.x has some problems... 
#BrowserMatch ^Mozilla/4 gzip-only-text/html 

# Netscape 4.06-4.08 have some more problems 
#BrowserMatch ^Mozilla/4\.0[678] no-gzip 

# MSIE masquerades as Netscape, but it is fine 
#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 

# Don't compress images 
#SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary 

# Make sure proxies don't deliver the wrong content 
#Header append Vary User-Agent env=!dont-vary 

</IfModule> 

<IfModule mod_ssl.c> 

############################################ 
## make HTTPS env vars available for CGI mode 

SSLOptions StdEnvVars 

</IfModule> 

<IfModule mod_rewrite.c> 

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

Options +FollowSymLinks 
RewriteEngine on 

############################################ 
## you can put here your magento root folder 
## path relative to web root 

#RewriteBase /magento/ 

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

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

############################################ 
## 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> 


############################################ 
## Prevent character encoding issues from server overrides 
## If you still have problems, use the second line instead 

AddDefaultCharset Off 
#AddDefaultCharset UTF-8 

<IfModule mod_expires.c> 

############################################ 
## Add default Expires header 
## http://developer.yahoo.com/performance/rules.html#expires 

ExpiresDefault "access plus 1 year" 

</IfModule> 

############################################ 
## By default allow all access 

Order allow,deny 
Allow from all 

########################################### 
## Deny access to release notes to prevent disclosure of the installed Magento version 

<Files RELEASE_NOTES.txt> 
order allow,deny 
deny from all 
</Files> 

############################################ 
## If running in cluster environment, uncomment this 
## http://developer.yahoo.com/performance/rules.html#etags 

#FileETag none 

人有什么想法?

+0

该网站没有更改,或者它是否提供500错误?如果你访问同一页面,它应该只做一个或另一个。如果它给太多的重定向500,谷歌“服务器头检查器”,看看网站试图重定向到什么页面。之后通常很容易找到。 – iJeep 2012-02-06 17:36:01

+0

我试过一些产生任一结果的htaccess变体。我会研究一下,谢谢 – miles 2012-02-06 17:43:21

+0

如果你输入'http://domain.com/product?test',会发生什么? – Gerben 2012-02-06 17:57:30

回答

3

避免同时使用RewriteRuleRedirect。它们是不同的模块,可以相互作用,导致不寻常的副作用。

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.example\.com$ 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,L] 

RewriteRule ^home$/[L,R=301] 

也尝试清除浏览器缓存,因为301的缓存非常积极。

编辑

您的评论后,读你原来的问题更彻底,我认为你放在WWW-规则在错误的位置。尝试将这些规则放在当前htaccess文件的顶部。

+0

尝试了你的方法,当我重新加载网站时,仍然出现错误'太多重写' – miles 2012-02-06 20:39:41

+0

明白了!哇噢! – miles 2012-02-06 21:14:20

+0

更新了我的文章 – Gerben 2012-02-06 21:18:27