2012-12-12 30 views
0

所以我有一个根文件夹与此,因为它的.htaccess(这是一个WordPress的版本):mod_rewrite的目录里面没有正确匹配

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

,我已经有了一个叫safetytraining-2的子目录里面。请给分目录做工精细,和我有在safetytraining-2称为true.php一个文件,它的内容是这样的:

<html> 
    <body> 
     <?php var_dump($_GET); 
     ?> 
    </body> 
</html> 
内safetytraining-2

现在,我有一个是的.htaccess我试图用mod_rewrite来测试。这是它的内容:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{THE_REQUEST}  ^true\.php(.*)$ 
    RewriteRule ^true\.php(.*)$  -     [L] 

    RewriteRule ^(.*)$   true.php?p=$1  [L] 
</IfModule> 

现在,这里的问题。当我去website.com/safetytraining-2/foobar我得到这样的输出:

array(1) { ["p"]=> string(8) "true.php" } 

这真是混乱的废话了我。我把条件的第一条规则放在试图阻止apache递归应用重写规则的地方,但我猜测它没有帮助。无论我在/ safetytraining /之后放置什么,我都会得到这个输出。在这里任何帮助家伙?您可以在athanclark.com/safetytraining-2上查看该页面。任何帮助都是极好的!!

回答

0

我只是想通了。 确保你检查你的Apache版本!版本1.x不识别Perl兼容的正则表达式,而是使用POSIX Extended正则表达式。将.*重写为[A-Za-z0-9/=-_']+适合我。我将不得不更多地阅读POSIX风格的内容以了解如何接受句点(。),但现在它仍然有效。

+0

您仍在使用Apache 1.x?!?!? –

+0

我必须!我不得不使用蹩脚的网络托管服务,Windows xampp和使用Apache 1.3><的客户端 –

相关问题