Apache .htaccess从文件夹重写会破坏网站
我正在尝试制定重写规则,因此如果访问者键入: 它被解析为: https://mywebsite/invite.php?id=abc123 使用以下代码: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
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="../">
因此,它会跳回实际目录,不会破坏网站链接。
如果有人有更好的方法,我会很高兴他们与我分享。
干杯