从文件夹重写 .htacess 会破坏网站

问题描述

我正在尝试制定重写规则,以便如果访问者键入: https://mywebsite.com/app/invite/abc123 它被解析为: https://mywebsite/invite.PHP?id=abc123

使用以下代码

RewriteRule ^app/invite/(.+)$ /app/invite.PHP?id=$1

问题是重写后所有的相关链接都断开了,因为invite不是一个真正存在的目录,它被添加到所有的相关链接中。

如何解决此问题或阻止将邀请目录添加链接


我想指出的是,我在 .htaccess 文件中使用了以下规则。

RewriteEngine On

# Redirect http  to https
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# Remove PHP file extension from links
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.PHP -f 
RewriteRule ^(.*)$ $1.PHP

我正在尝试调整所有不会导致无限重定向或间隔服务器错误内容

我使用 Apache/2.4.46

解决方法

我终于通过使用此代码设法解决了这个问题:

// this is on a button,and how I send the edited info from *form2* to the database

byte[] imageData;

    using (SqlConnection sqlCon = new SqlConnection(connectionString))
    using (SqlCommand sqlCmd = new SqlCommand())
    using (MemoryStream mStream = new MemoryStream()) {

        sqlCon.Open();
        sqlCmd.Connection = sqlCon;
        sqlCmd.Parameters.AddWithValue("@Parameter1",txt1.Text.ToString());
        sqlCmd.Parameters.AddWithValue("@Parameter2",txt2.Text.ToString());
        sqlCmd.Parameters.AddWithValue("@Parameter2",txt2.Text.ToString());

        imageData = mStream.ToArray();
        sqlCmd.Parameters.AddWithValue("@Parameter3",SqlDbType.VarBinary).Value = imageData;
        pb1.Image.Save(mStream,ImageFormat.Jpeg);

        SqlCmd.ExecuteNonQuery();

在invite.php 中,我将RewriteRule "^app/invite/([0-9a-zA-Z]+)" "/app/invite?id=$1" [NC,L,QSA] 标签中的基础设置为:

<head>

所以它会跳回实际目录并且不会破坏网站链接。 如果有人有更好的方法,如果他们与我分享,我会很高兴。 干杯!