Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess从文件夹重写会破坏网站_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

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

Apache .htaccess从文件夹重写会破坏网站,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在尝试制定重写规则,因此如果访问者键入: 它被解析为: https://mywebsite/invite.php?id=abc123 使用以下代码: RewriteRule ^app/invite/(.+)$ /app/invite.php?id=$1 问题是所有相对链接在重写后都会断开,因为invite不是一个真正的现有目录,而是添加到所有相对链接中 如何修复此问题或防止将invite目录添加到链接 我想指出,我在.htaccess文件中使用了以下规则 RewriteEngine On

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

使用以下代码:

RewriteRule ^app/invite/(.+)$ /app/invite.php?id=$1
问题是所有相对链接在重写后都会断开,因为invite不是一个真正的现有目录,而是添加到所有相对链接中

如何修复此问题或防止将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我最终通过使用以下代码解决了这个问题:

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

<base href="../">

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