我正在使用 htaccess 從 URL 中隱藏 GET 變數。我有問題。Myy的專案結構是這樣的:
--project
index.php
/views
login.php
example.php
/user
dashboard.php
因此,當我使用“localhost/project/login”之類的內容時,我會正確地重定向到 login.php 頁面。但是,當我執行“localhost/project/user/dashboard”之類的操作時,我會收到 Apache 生成的 404 Not Found 回應。

這就是我在 PHP 中使用 GET 變數來包含頁面的方法:
PHP代碼:
<?php
if(isset($_GET['page'])) {
$page = $_GET['page'].'.php';
if(is_file('views/'.$page)) {
include 'views/'.$page;
} else {
echo 'Page does not exist';
}
?>
htaccess 檔案:
RewriteEngine on
RewriteRule ^([A-Za-z0-9-] )/?$ index.php?page=$1 [NC]
有人可以給我一些指導嗎?我沒有使用 .htaccess 檔案的經驗
uj5u.com熱心網友回復:
RewriteRule ^([A-Za-z0-9-] )/?$ index.php?page=$1 [NC]
我假設您的.htaccess檔案位于/project子目錄中(以便localhost/project/login您的 PHP 代碼成功匹配和路由 URL)。
但是,RewriteRule指令中的正則運算式與 request 不匹配localhost/project/user/dashboard,因為正則運算式不匹配,因為正user/dashboard則運算式不允許斜杠(URL 路徑末尾除外)。所以請求只是通過 Apache 404。
您需要允許在RewriteRule pattern中使用斜杠,您可以通過在字符類中包含斜杠來做到這一點。例如:
RewriteRule ^([/A-Za-z0-9-] ?)/?$ index.php?page=$1 [L]
量詞需要非貪婪,以免消耗可選的尾隨斜杠。
注意:NC這里不需要標志,但L標志是(如果您稍后添加更多指令)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/423063.html
標籤:
