繁体   English   中英

目录内部的Mod_Rewrite不正确匹配

[英]Mod_Rewrite inside directory not matching correctly

所以我有一个根文件夹,因为它是.htaccess(这是一个WordPress版本):

<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上查看页面。 任何帮助都是极好的!!

我只是想通了。 确保检查您的Apache版本!!! 1.x版无法识别与Perl兼容的正则表达式,而是使用POSIX扩展正则表达式。 将上面的.*重写为[A-Za-z0-9/=-_']+对我[A-Za-z0-9/=-_']+ 我将不得不继续阅读POSIX风格的内容,以了解如何接受句点(。),但它现在可以使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM