为了账号安全,请及时绑定邮箱和手机立即绑定

对于我的特定场景,我应该怎么做才能使用 .htaccess 制作漂亮的 URL?

对于我的特定场景,我应该怎么做才能使用 .htaccess 制作漂亮的 URL?

PHP
ABOUTYOU 2022-05-27 16:45:40
这是我的完整案例:/var/www/html/ 目录中的 mvcframework 目录。mvcframework 包含一个公共目录,其中 index.php 作为前端加载器。我正在使用以下代码在公共目录中创建一个 .htaccess 文件:<IfModule mod_rewrite.c>  RewriteEngine On  RewriteBase /  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-f  RewriteRule  ^(.+)$ index.php?$1 [QSA,L]</IfModule>我通过设置为指向公共文件夹的虚拟主机 url mvcframe.local 访问它:<VirtualHost 127.0.0.3:80>    ServerName mvcframe.local    DocumentRoot /var/www/html/mvcframework/public    <Directory /var/www/html/mvcframework>        Options -Indexes +FollowSymLinks        AllowOverride All    </Directory>    ErrorLog /var/www/html/mvcframework/mvc-error.log    CustomLog /var/www/html/mvcframework/mvc-access.log combined</VirtualHost>当我访问http://mvcframe.local或http://mvcframe.local/时,它会在公用文件夹 index.php 中输出 index.php 内容。当我访问http://mvcframe.local/?posts/hello它输出:Requested URL = posts/hello但是当我访问http://mvcframe.local/posts/hello删除?时,它给出:Not FoundThe requested URL was not found on this server.Apache/2.4.41 (Ubuntu) Server at mvcframe.local Port 80我试图找出搜索 2 小时的解决方案,但仍然没有找到解决方案。
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

好吧,所以在搞砸并阅读了几个小时的 .htaccess 教程之后,我终于设法理解了我的错误。首先,这是帮助我理解错误的视频。


这是我的解决方案:


<IfModule mod_rewrite.c>

  Options -Multiviews

  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteRule  ^(.+)$ index.php?$1 [QSA,L]

</IfModule>

首先,我正在检查是否启用了 mod_rewrite。然后提供一些选项。然后打开 RewriteEngine 这是启用重写规则所必需的。然后为提供的任何查询提供 [If no directory] 和 [If not file] 的重写条件,为此我重写规则基本上告诉它检查所有不以扩展名“。”结尾的字符串,只需将它们全部指向 index.php?$1。


基本上任何有 mvcframe.local/something_here/some_here/... 的东西都会自动变成 mvcframe.local/index.php?something_here/some_here


对于我的设置,index.php 是前端加载程序,因此所有内容都必须通过该文件。


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信