我的 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/
。
提前致谢 !
答案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
空字符串。不过,您应该能够轻松地将空字符串排序出来。
答案2
终于找到解决办法了!
制作了一个可以轻松解决问题的功能!
function redirect_to_unslashed($i)
{
if(isset($_SESSION['request'][$i]))
{
if($_SESSION['request'][$i] == '')
{ navigate($_SESSION['request'][$i-1]);
}
}
}
如果最后一个斜杠包含空字符串,则此函数实际上会重定向。