我使用這個
經過一番調查,我發現問題出在.htaccess檔案上。
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.zip|\.css|\.svg|\.js)$
RewriteRule (.*) routes.php [QSA,L]
# BEGIN Pdocrud
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
</IfModule>
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# HTML
ExpiresByType text/html "access plus 2 days"
</IfModule>
# END Pdocrud
前 3 行負責路由。當我洗掉它們時 PDOCrud 作業,但我的 url 將localhost/public/view/reports.view.php而不是localhost/cases-reports.
我怎樣才能重建它.htaccess以使其作業?
PDOCrudAjaxCtrl.php
<?php
@session_start();
Class PDOCrudAjaxCtrl {
public function handleRequest() {
$instanceKey = $_REQUEST["pdocrud_instance"];
if(!isset($_SESSION["pdocrud_sess"][$instanceKey])){
die("Session has been expired. Please refresh your page to continue.");
}
$pdocrud = unserialize($_SESSION["pdocrud_sess"][$instanceKey]);
$action = $_POST["pdocrud_data"]["action"];
$data = $_POST["pdocrud_data"];
$post = $_POST;
if (isset($_FILES))
$post = array_merge($_FILES, $post);
$data["post"] = $post;
switch (strtoupper($action)) {
case "VIEW":
echo $pdocrud->render("VIEWFORM", $data);
break;
case "SORT":
$pdocrud->setBackOperation();
$data["action"] = "asc";
echo $pdocrud->render("CRUD", $data);
break;
case "ASC":
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "DESC":
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "ADD":
echo $pdocrud->render("INSERTFORM", $data);
break;
case "INSERT":
$pdocrud->render("INSERT", $post);
break;
case "INSERT_CLOSE":
$pdocrud->setBackOperation();
$pdocrud->render("INSERT", $post);
break;
case "INSERT_BACK":
$pdocrud->setBackOperation();
$pdocrud->render("INSERT", $post);
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "BACK":
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "EDIT":
$pdocrud->setInlineEdit(false);
echo $pdocrud->render("EDITFORM", $data);
break;
case "INLINE_EDIT":
$pdocrud->setBackOperation();
$pdocrud->setInlineEdit(true);
echo $pdocrud->render("EDITFORM", $data);
break;
case "ONEPAGEEDIT":
$pdocrud->setBackOperation();
$pdocrud->setInlineEdit(false);
echo $pdocrud->render("ONEPAGE", $data);
break;
case "ONEPAGEVIEW":
$pdocrud->setBackOperation();
echo $pdocrud->render("ONEPAGE", $data);
break;
case "QUICK_VIEW":
echo $pdocrud->render("QUICKVIEW", $data);
break;
case "RELATED_TABLE":
echo $pdocrud->render("RELATED_TABLE", $data);
break;
case "INLINE_BACK":
$pdocrud->render("UPDATE", $post);
echo $pdocrud->render("CRUD", $data);
break;
case "UPDATE":
$pdocrud->render("UPDATE", $post);
break;
case "UPDATE_BACK":
$pdocrud->setBackOperation();
$pdocrud->render("UPDATE", $post);
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "UPDATE_CLOSE":
$pdocrud->setBackOperation();
$pdocrud->render("UPDATE", $post);
break;
case "DELETE":
$pdocrud->render("DELETE", $data);
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "DELETE_SELECTED":
$pdocrud->render("DELETE_SELECTED", $data);
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "PAGINATION":
$pdocrud->setBackOperation();
$pdocrud->currentPage($data["page"]);
echo $pdocrud->render("CRUD", $data);
break;
case "RECORDS_PER_PAGE":
$pdocrud->currentPage(1);
$pdocrud->recordsPerPage($data["records"]);
echo $pdocrud->render("CRUD", $data);
break;
case "SEARCH":
$pdocrud->currentPage(1);
echo $pdocrud->render("CRUD", $data);
break;
case "AUTOSUGGEST":
if(isset($_GET["callback"]))
$data["callback"] = $_GET["callback"];
echo $pdocrud->render("AUTOSUGGEST", $data);
break;
case "EXPORTTABLE":
echo $pdocrud->render("EXPORTTABLE", $data);
break;
case "EXPORTFORM":
$pdocrud->render("EXPORTFORM", $data);
break;
case "SWITCH":
$pdocrud->setBackOperation();
$pdocrud->render("SWITCH", $data);
echo $pdocrud->render("CRUD", $data);
break;
case "BTNSWITCH":
$pdocrud->setBackOperation();
$pdocrud->render("BTNSWITCH", $data);
echo $pdocrud->render("CRUD", $data);
break;
case "LOADDEPENDENT":
echo $pdocrud->render("LOADDEPENDENT", $data);
break;
case "EMAIL" : echo $pdocrud->render("EMAIL", $post);
break;
case "SELECT":
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "SELECTFORM":
echo $pdocrud->render("SELECT", $post);
break;
case "FILTER":
$pdocrud->setBackOperation();
$pdocrud->currentPage(1);
echo $pdocrud->render("CRUD", $data);
break;
case "RELOAD":
$pdocrud->setBackOperation();
echo $pdocrud->render("CRUD", $data);
break;
case "SAVE_CRUD_TABLE_DATA":
$pdocrud->setBackOperation();
$pdocrud->render("SAVE_CRUD_DATA", $data);
echo $pdocrud->render("CRUD", $data);
break;
case "RENDER_ADV_SEARCH":
$pdocrud->currentPage(1);
echo $pdocrud->render("CRUD", $data);
break;
case "DATE_RANGE_REPORT":
$pdocrud->setBackOperation();
$pdocrud->currentPage(1);
echo $pdocrud->render("CRUD", $data);
break;
case "CLONE":
echo $pdocrud->render("CLONEFORM", $data);
break;
case "CELL_UPDATE":
$updateData[$data["column"]] = $data["content"];
if (isset($data["id"]))
$pdocrud->setPrimarykeyValue($data["id"]);
$pdocrud->render("UPDATE", $updateData);
break;
case "AJAX_ACTION":
echo $pdocrud->render("AJAX_ACTION", $data);
break;
case "PRINTPDF":
echo $pdocrud->render("PRINT_PDF", $data);
break;
default:
break;
}
}
}
uj5u.com熱心網友回復:
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.zip|\.css|\.svg|\.js)$ RewriteRule (.*) routes.php [QSA,L] # BEGIN Pdocrud <IfModule mod_rewrite.c> RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ $1.php </IfModule>
第一條規則重寫所有內容,routes.php因此第二條規則甚至不會被處理。您需要顛倒這兩個規則才能使其有意義。但是,應該注意的是,這兩個系統的存在似乎對您可以實作為“路由”的 URL 型別施加了“靜默”限制。
但是,無論如何,第二條規則并不是嚴格正確的,因為它可能會重寫到與前面條件中測驗的 URL 不同的 URL (對于某些請求,這可能會導致重寫回圈,即 500 錯誤。參見有關此問題的更多詳細資訊,請參閱 ServerFault 上的以下問題)。
請嘗試以下操作(假設.htaccess檔案位于檔案根目錄中):
RewriteEngine On
# BEGIN Pdocrud
RewriteCond %{REQUEST_URI} !\.(php|png|jpe?g|gif|zip|css|svg|js)$
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# HTML
ExpiresByType text/html "access plus 2 days"
</IfModule>
# END Pdocrud
RewriteRule !\.(png|jpg|gif|jpeg|zip|css|svg|js)$ routes.php [L]
補充筆記:
在附加
.php擴展名的“Pdocrud”規則中,檢查請求沒有映射到目錄只是為了檢查它是否映射到檔案是沒有意義的。在您的“路由”規則中,前面的條件不是必需的——應該在 中執行此檢查
RewriteRule。同樣,QSA不需要標志。這個配置的一個限制是你不能有一個“路由”也恰好映射到一個
.php檔案(當.php被附加時)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/402010.html
標籤:.htaccess
