重写规则以将两个友好的 URL 重定向到同一个文件

Rewrite rule to redirect two friendly urls to same file

我正在尝试将两个不同的 url 重定向到同一个文件。

url是:http://localhost/CLIENTI/HOTEL/cp/amministratorihttp://localhost/CLIENTI/HOTEL/cp/amministratori/test

实际上我目前看到第一个 url,但是当我打开第二个时,我看到客户端包含很多文件错误(es js 和 css 文件 header/footer).

这是我的 .htaccess 文件:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^dashboard$ dashboard.php [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^amministratori$ dashboard.php [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^amministratori/test$ dashboard.php [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]

这就是我所有的 htaccess 代码。错误是 bootstrap.js 和 main.js 的 404,其中包含前端的自定义代码。我已经理解了这个问题,但我还没有理解是否有替代前导斜杠的解决方案,因为我的页眉和页脚包含在 php 中,所以在 /cp/amministratori 中它们像现在一样工作, 但很明显,如果我用前导斜杠进行更改,它们将不再起作用

根据您显示的尝试,请尝试遵循 htaccess 规则。确保将您的 htaccess 文件与 CLIENTI 文件夹(不在其中)放在一起。

请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine On

RewriteBase /CLIENTI/HOTEL/cp/amministratori/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^dashboard/?$ dashboard.php [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?$ dashboard.php [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/?$ dashboard.php [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [QSA,L]

JS/CSrewrite/redirect: 您可能需要使用 base 标记来修复您的 js 和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html 那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用 base 标记。在您网页的 header 中添加此 <base href="/"> 以便您的相关链接可以从正确的位置加载。