簡體   English   中英

為什么這個RewriteRule不起作用? (XAMPP)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM