[英]Why is this RewriteRule not working? (xampp)
我已经在我的项目根文件夹c:\\xampp\\htdocs\\myproject\\
设置了这个非常简单的.htaccess文件
RewriteEngine on
RewriteRule ^(.+)$ test.php?stuff=$1 [QSA,L]
以及一个test.php
(没有index.php)
<?php
if (isset($GET_['stuff'])) {
echo $GET_['stuff'];
} else {
echo "not set";
}
当我访问localhost/myproject
而不是将我重定向到test.php
它仅列出了我的项目的目录结构。
当我将htaccess更改为类似
RewriteRule ^(.+)$ http://www.google.de [L]
一切都按预期进行。 我究竟做错了什么?
之所以会得到目录列表,是因为将.htaccess
放在/myproject/
时,URL localhost/myproject
实际上会发送一个空的按目录URI。
您的URI模式是(.+)
,显然不会与空字符串匹配,因此规则不会触发,并且由于您没有index.php
或index.html
,因此您会获得目录列表。
正确的规则应为:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ test.php?stuff=$1 [QSA,L]
PS:请注意,删除RewriteCond
将为localhost/myproject
调用test.php
,但它将在内部作为test.php?stuff=test.php&stuff=
调用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.