我在子文件夹http://www.example.com/folder
中有一个站点
在.htaccess
中,我具有以下重写规则
RewriteEngine On
RewriteBase /folder/
RewriteRule ^imprint$ imprint.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule "^([a-zA-Z0-9]*)$" "index.php?code=$1" [L]
在folder
中,我只有2个文件index.php
和imprint.php
,当然还有.htaccess
如果我查询:http://www.example.com/folder/test,则可以很好地重定向到http://www.example.com/folder/index.php?code=test。这很好。
如果我查询:http://www.example.com/folder/imprint,则会收到404错误
有趣的是,如果我将imprint.php
重命名为imprint_.php
并将相应规则修改为RewriteRule ^imprint$ imprint_.php
反之亦然:将相应规则修改为RewriteRule ^imprint_$ imprint.php
并查询http://www.example.com/folder/imprint_
最后,如果我有一个名为imprint_.php
的文件和指向RewriteRule ^imprint_$ imprint.php
的相应规则并查询了http://www.example.com/folder/imprint_,则不也不起作用
我的apache conf文件是:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/
ServerName www.example.com
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/example.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
这是怎么了?