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