注意:爲簡單解釋問題並保留基本知識,此處不對代碼進行清理。我的生產代碼將在處理前清理$ _GET。導致500內部服務器錯誤的HTACCESS
這裏是我的.htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_URI} "/files/"
RewriteRule (.*) $1 [L]
RewriteRule ^(.*)/(.*)$ ?cat=$1&title=$2 [L]
RewriteRule ^(.*) ?cat=$1
這是我的PHP文件:
$cat = $_GET['cat'];
$title = $_GET['title'];
if($cat && !$title) {
echo 1;
}
if($cat && $title) {
echo 2;
}
如果我去我的測試網址:http://local.testzone.com/cat/title或http://local.testzone.com/cat
我得到一個500內部服務器錯誤。
如果我評論在.htaccess文件的最後一行:
#RewriteRule ^(.*) ?cat=$1
http://local.testzone.com/cat給我:
未找到
在此服務器上找到請求的URL /貓。
http://local.testzone.com/cat/title給我:
這是它應該做的,按照2我的我的PHP回聲如果貓和標題存在。
我的問題是 - 我如何修改訪問文件,所以如果只有一隻貓,它會回顯1?我能做到這一點的唯一方法是手動設置第一個層次是這樣的:
RewriteRule ^cat$ ?cat=cat
這工作,但不會在我寫的應用程序。我需要根據URL中的cat值來查詢數據庫。 cat值可以動態更改,我不能將其硬編碼到htaccess文件中。標題工作正常,但我如何獲得貓部分功能?
希望我的要求很明確,期待有任何幫助!
您的重寫規則導致無限循環,apache可能在10次重定向後中斷。嘗試審查它們,尤其是這一個:RewriteRule ^(。*)?cat = $ 1 – nicolas 2013-05-02 23:17:53