奇怪的行为mod_rewrite

时间:2018-09-20 05:32:32

标签: apache mod-rewrite

我在子文件夹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.phpimprint.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>

这是怎么了?

0 个答案:

没有答案