我有以下.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文件夹名称与文件名不匹配?
答案 0 :(得分:3)
这似乎是MultiViews
选项的问题。使用以下命令禁用它:
Options -MultiViews
位于.htaccess的顶部。在MultiViews
模块之前运行的Apache's content negotiation module
使用选项mod_rewrite
,并使Apache服务器匹配文件扩展名。因此/file
可以在URI中,但它会提供/file.php
。