Apache-2.2

關於重寫引擎

  • January 25, 2016

我的 htaccess 文件包含這個

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^.*$ ./index.php

這會將所有請求重定向到我的 index.php 頁面,該頁面根據需要包含不同的文件。該文件基於 url 制動/並將輸出作為數組提供。

$request = split("/", $request);

如果有人訪問mywork/yash,查詢$request[0]就可以正常工作yash。但是當我為$request[1]它程式時會undefined offset出錯。

我知道當訪問未定義的數組索引時會出現此錯誤,但是當訪問時mywork/yash/,該錯誤不再發生!。

有人可以告訴我.htaccess在每個請求後添加一個尾部斜杠的規則,以便使用者鍵入mywork/yash它後立即將其轉換為mywork/yash/.

提前致謝 !

終於找到解決辦法了!

做了一個輕而易舉解決的功能!

function redirect_to_unslashed($i)

{

if(isset($_SESSION['request'][$i]))

{

if($_SESSION['request'][$i] == '') `{ navigate($_SESSION[‘request’][$i-1]);

} }`

}

如果最後一個斜杠包含空字元串,此函式實際上會重定向。

尾部斜線

使用重寫規則添加尾部斜杠是可能的,但不是有目的的,因為在這種情況下,您不能再重定向到index.php

如果你真的需要那個斜線,你仍然可以在你的 PHP 腳本中添加它。

拆分請求

假設它$request派生自$_SERVER['REQUEST_URI],您可以在每次出現 時將其拆分/

$parts = explode('/', $request);

因為mywork/yash它會

array(2) {
 [0]=>
 string(6) "mywork"
 [1]=>
 string(4) "yash"
}

因為mywork/yash/它會是

array(3) {
 [0]=>
 string(6) "mywork"
 [1]=>
 string(4) "yash"
 [2]=>
 string(0) ""
}

但是在使用 時$_SERVER['REQUEST_URI],您將始終有一個前導斜杠,這將導致第一個元素為parts空字元串。不過,您應該能夠輕鬆地對空字元串進行排序。

引用自:https://serverfault.com/questions/751002