.htaccess重写规则对我不起作用

时间:2015-02-02 21:08:18

标签: .htaccess mod-rewrite

我试图设置一些漂亮的网址

http://www.foo.com/results/2014

呼叫

http://www.foo.com/results/index.php?year=2014

2014年'可能真的是任何字符串(如果我得到不适当的输入,我会做适当的错误处理)。

然而,我得到的是http://www.foo.com/results/工作正常,但是在尾部斜杠之后的任何内容都会返回404错误。

以下是我的.htaccess文件的内容。有人可以指出我的错误吗?

提前致谢!

的.htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.foo.com/results/$1 [L,R=301]
RewriteRule ^results/([^/]+)/?$ /results/index.php?year=$1

1 个答案:

答案 0 :(得分:1)

/results/目录中这样做:

RewriteEngine On
RewriteBase /results/

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteRule ^([^/.]+)/?$  index.php?year=$1 [L,QSA]

您的规则不起作用的原因:

  1. 您只能匹配当前目录中的URI模式。因此,如果您已经在results/文件夹中且URI为/results/foo,那么foo
  2. 中匹配的URI将为RewriteRule
  3. 不使用RewriteBase