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

.htaccess rewrite rule not working for me

我正在尝试设置一些漂亮的 URL,所以

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

来电

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

“2014”实际上可以是任何字符串(如果输入不当,我会进行适当的错误处理)。

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

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

提前致谢!

.htaccess

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

/results/ 目录中这样设置:

RewriteEngine On
RewriteBase /results/

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

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

您的规则无效的原因:

  1. 您只能匹配当前目录中的相对 URI 模式。因此,如果您已经在 results/ 文件夹中并且 URI 是 /results/foo,则匹配的 URI 将是 foo in RewriteRule
  2. 没有使用 RewriteBase