.htaccess PHP页面加载

yqyhoc1h  于 2023-02-24  发布在  PHP
关注(0)|答案(1)|浏览(124)

我使用id param从url中获取指定的数据。我在.htaccess文件中也有重写规则,让用户在斜杠后面输入数字。我现在使用localhost,所以它看起来像这样:
mypage.localhost/1
问题是当我在URL中的id后添加斜杠时,如mypage.localhost/1/页面加载不正确。有来自数据库的数据,但布局完全损坏。有来自php和.htaccess的代码

public function show():array
    {
        $id=(int)$_GET['id'];
        $data=array();
    if($id){
        try {
            $data=$this->get($id);
        }catch (DatabaseException)
        {
            header("Location:missingID");
            throw new DatabaseException("Failed to get paste");
        }
    }else{
        header("Location:missingID");
    }
    return $data;
}

RewriteEngine on
RewriteRule ^([0-9]+)/?$ out.php?id=$1 [L,QSA]
RewriteRule ^([a-z]+)/?$ index.html?error=$1 [L,QSA]
ErrorDocument 404 /index.html

我该如何修复它?我应该在php文件或.htaccess文件中添加一些东西吗?

hfyxw5xn

hfyxw5xn1#

在.htaccess文件中,您可以添加一个条件,以从重写规则中排除对已存在文件的请求。这将防止规则应用于对静态文件(如CSS和JS文件)的请求。
以下是.htaccess文件的更新版本:

RewriteEngine on

# exclude requests for existing files and directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# rewrite numeric IDs to out.php
RewriteRule ^([0-9]+)/?$ out.php?id=$1 [L,QSA]

# rewrite error pages to index.html
RewriteRule ^([a-z]+)/?$ index.html?error=$1 [L,QSA]

ErrorDocument 404 /index.html

相关问题