[英]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.