如何以类似MVC的方法将URL重写为index.php

时间:2019-07-16 09:16:12

标签: apache .htaccess mod-rewrite model-view-controller

用.htaccess文件中的RewriteRule重写MVC样式应用程序的URL时,URL越来越长出现问题。 在那里,您可以找到一个(不是)有效的示例:https://rossi.klingt.org/new/

我已经尝试过在question

中找到的几种重写规则

我正在跑步: 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的末尾。我希望它的行为有所不同。我在一个很旧的系统上做了类似的事情,它只保留了最后一个文件夹,没有将它们加起来。

我想念什么?任何帮助,将不胜感激!谢谢大家!

1 个答案:

答案 0 :(得分:0)

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

我在错误的位置寻找解决方案。 通过在我的部分中添加标签,浏览器现在知道如何处理链接的相对路径,并且不会将新链接粘贴到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>