.htaccess导致重定向循环

时间:2010-12-28 18:19:19

标签: .htaccess

我的网站上有一个网址没有/,但是当我添加/时,它说有一个重定向循环......我很难在这里看到问题...

Options -indexes
RewriteEngine On
#
#
#php_value output_handler ob_gzhandler
php_value output_handler none
php_flag register_globals off
php_flag safe_mode off

ErrorDocument 404 /404
#
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
#
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

RewriteRule ^battery/([^/]+)$ /browser/product?sku=BATTERY+$1&type=battery
RewriteRule ^vehicles/([^/]+)/([^/]+)/([^/]+)/product([0-9]+)$ /browser/index.php?make=$1&model=$2&id=$3&%{QUERY_STRING} [L,NC]

RewriteRule ^vehicles/([^/]+)/([^/]+)/([^/]+)/([0-9]+)$ /browser/product.php?make=$1&model=$2&year=$3&id=$4&%{QUERY_STRING} [L,NC]

RewriteRule ^vehicles/([^/]+)/([^/]+)/([^/]+)$ /store/product/list.php?make=$1&model=$2&year=$3&%{QUERY_STRING} [L,NC]
RewriteRule ^vehicles/([^/]+)/([^/]+)$ /vehicle/make/model/year/list.php?make=$1&model=$2&%{QUERY_STRING} [L,NC]
RewriteRule ^vehicles/([^/]+)$ /vehicle/make/model/list.php?make=$1&%{QUERY_STRING} [L,NC]
RewriteRule ^vehicles/$ /vehicle/make/list.php{QUERY_STRING} [L,NC]

RewriteRule ^keyfinder /browser/product?id=1001552 [L,NC]

2 个答案:

答案 0 :(得分:3)

我可能会为RewriteRule做一些不同的正则表达式,但它似乎正在接受那个尾随斜杠。添加/?对于车辆,电池和电池的每一个RewriteRules的结尾keyfinder的。 /?我想在线的末尾寻找零或一个尾部斜线。

以下是一个例子:

RewriteRule ^vehicles/([^/]+)/([^/]+)/?$ /vehicle/make/model/year/list.php?make=$1&model=$2&%{QUERY_STRING} [L,NC]
RewriteRule ^vehicles/([^/]+/?)$ /vehicle/make/model/list.php?make=$1&%{QUERY_STRING} [L,NC]
RewriteRule ^vehicles/?$ /vehicle/make/list.php{QUERY_STRING} [L,NC]

上述更改将解决由尾部斜杠引起的重定向循环问题,而不是重定向循环本身。您可能希望您的404页面显示出来。它没有用,因为“ErrorDocument”是错误的。 404页面没有扩展名。

再次作为一个例子,如果您的错误页面被称为404.php,那么该行需要看起来像这样......

ErrorDocument 404 /404.php

希望这有帮助

答案 1 :(得分:0)

是否可以拥有重写引擎的日志?
在您的配置中添加以下行(下面的RewriteEngine On就足够了):

RewriteLog      logs/rewrite_https.log
RewriteLogLevel 15

我认为您的其他日志位于logs/