简单的.htaccess重写规则不起作用

时间:2015-06-29 08:46:46

标签: .htaccess mod-rewrite

我有以下.htaccess文件。它拒绝访问以下url结构:

  

www.example.com/test

即使它访问了这个罚款:

  

www.example.com/test.php

我使用这个文件运行了一些更复杂的重写规则,它运行得很好。例如:

  

RewriteRule ^ tests /([0-9] +)/?$ /tests_page.php?id=$1 [PT,L,QSA]

我不明白这是怎么回事。我在这里缺少什么?

#OPTIONS
Options -Indexes
Options +FollowSymLinks

#ACCESS TO THE .HTACCESS FILE
<Files .htaccess>
order allow,deny
deny from all
</Files>

#REWRITE ENGINE
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteEngine On

#PAGES REWRITE
RewriteRule ^test/?$ /test.php

更新

我将文件重命名为tests.php,并将规则更改为此并且有效:

  

RewriteRule ^ test /?$ /tests.php

这仍然无法解释为什么会发生这种情况

为什么我的url文件夹名称与文件名不匹配?

1 个答案:

答案 0 :(得分:3)

这似乎是MultiViews选项的问题。使用以下命令禁用它:

Options -MultiViews

位于.htaccess的顶部。在MultiViews模块之前运行的Apache's content negotiation module使用选项mod_rewrite,并使Apache服务器匹配文件扩展名。因此/file可以在URI中,但它会提供/file.php