Apache URL重写行为异常

Apache URL重写行为异常,apache,mod-rewrite,url-rewriting,urlencode,httpd.conf,Apache,Mod Rewrite,Url Rewriting,Urlencode,Httpd.conf,我有下面的设置;一个非常简单的URL重写设置和测试设置 // ----- test.php ----- <?php phpinfo(); // ----- test.php ----- /----test.php----- 由于apache版本不支持将NoDecode作为allowencodedslass的选项,因此我最终使用了以下组合。我还必须对请求URI进行双重url编码。不太理想,但目前对我有效 <VirtualHost *:80> ServerNam

我有下面的设置;一个非常简单的URL重写设置和测试设置

// ----- test.php -----
<?php

phpinfo();
// ----- test.php -----
/----test.php-----

由于apache版本不支持将
NoDecode
作为
allowencodedslass
的选项,因此我最终使用了以下组合。我还必须对请求URI进行双重url编码。不太理想,但目前对我有效

<VirtualHost *:80>
        ServerName test
        ServerAlias test.*
        DocumentRoot /var/www/test
        AllowEncodedSlashes On
</VirtualHost>

<Directory "/var/www/test/">
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d

        # Option B below was the key!
        RewriteRule .* test.php/$0 [R,NE,B]
</Directory>

服务器名测试
服务器别名测试*
DocumentRoot/var/www/test
AllowEncodesOn
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#下面的选项B是关键!
重写规则。*test.php/$0[R,NE,B]

这可能会有帮助:你不希望你的指令在你的身体里成为Apache全局指令吗?谢谢@Skittles,你是绝对正确的;但同时它是正确的配置,特定于我的设置。
<VirtualHost *:80>
        ServerName test
        ServerAlias test.*
        DocumentRoot /var/www/test
        AllowEncodedSlashes On
</VirtualHost>

<Directory "/var/www/test/">
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d

        # Option B below was the key!
        RewriteRule .* test.php/$0 [R,NE,B]
</Directory>