我已经在我的项目根文件夹c:xampphtdocsmyproject
中设置了这个非常简单的。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]
一切正常。我做错了什么?
为什么你得到目录列表,因为你的URL localhost/myproject
实际上发送一个空的每目录URI当.htaccess
被放置在/myproject/
你的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=
调用