首页 > 解决方案 > 如何以类似 MVC 的方法将 URL 重写为 index.php

问题描述

在我的 .htaccess 文件中使用 RewriteRule(s) 为我的 MVC 样式应用程序重写 URL 时,我遇到了 URL 越来越长的问题。在那里你可以找到一个(不)工作的例子:https ://rossi.klingt.org/new/

我已经尝试了几个我在这里找到的重写规则,就像在这个问题中一样

我正在运行:Linux 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
PHP 版本 7.2.9-1 无法获得确切的 Apache 版本

我现在在文件夹 /new/ 中的 .htaccess 文件中使用的代码是这样的:

<IfModule mod_headers.c>
  Header always append X-Frame-Options SAMEORIGIN
  Header set X-XSS-Protection "1; mode=block"
</IfModule>
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /new
  RewriteCond %{REQUEST_URI} (^|/)\.htaccess$ [NC,OR]
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} -d [OR]
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule (^.*) index.php [L]
</IfModule>

如果您单击一个链接,它将被添加到 URL 的末尾。我预计它的行为会有所不同。我在一个非常旧的系统上做了类似的事情,它只保留了最后一个文件夹并且没有添加它们。

我错过了什么?任何帮助,将不胜感激!谢谢你们!!

标签: apache.htaccessmod-rewritemodel-view-controller

解决方案


好的,我刚刚发现出了什么问题。

我在错误的地方寻找解决方案。通过向我的部分添加标签,浏览器现在知道如何处理我的链接的相对路径,并且不会将新链接粘贴到 URL 的右端!

我当前的 .htaccess 代码如下

Options -MultiViews
Options -Indexes

<IfModule mod_headers.c>
    Header always append X-Frame-Options SAMEORIGIN
    Header set X-XSS-Protection "1; mode=block"
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /new
    RewriteCond %{REQUEST_URI} (^|/)\.htaccess$ [NC,OR]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L,NC,QSA]
</IfModule>

推荐阅读