【问题标题】:Apache2 Module Rewrite it is not working as it shouldApache2 Module Rewrite 它无法正常工作
【发布时间】:2020-12-14 18:32:43
【问题描述】:

我在 PHP 中创建了一个 MVC 系统,并使用 Apache Rewrite 模块来保护一些文件夹并编写 URL。

我在使用 Xampp 的开发机器上创建了基础,我什至在在线服务器(客户端)上使用了相同的系统,一切正常。

但我想在我工作的公司中设置的服务器上安装相同的 MVC 系统,供其他开发人员使用,但该服务器无法正常工作。

在出现此问题的服务器上,我安装了 Ubuntu 20.04(桌面)、Apache 2、PHP 7.4.13 和 MySQL。我已经启用了重写模块。

我使用的 .htaccess 与我在我的机器(Windows)和在线服务器(公共网络服务器)Linux 上使用的相同。

在我正在使用的 .htaccess 文件下方

我用来始终将客户端重定向到公用文件夹的第一个 .htaccess 文件

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>

这一秒在公用文件夹中,用于编写 URL

<IfModule mod_rewrite.c>
    Options -Multiviews
    RewriteEngine On
    RewriteBase /criate/public
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>

后者位于 App 文件夹内,我使用它们来无权访问该文件夹

Options -Indexes

我的 Apache default.conf 文件

    <Directory "/var/www/html">
      Options Indexes FollowSymLinks
      AllowOverride All
      Order allow, deny
      allow from all
      Require all granted
   </Directory>

但是发生了什么,当访问项目 url 时,我们假设它是:https://api.aplication.com

运行良好,带我到应用程序主页。但是,例如,当我单击登录按钮时。给我以下错误。

未找到 在此服务器上未找到请求 URL

但是有,因为我制作了一个可以在 Windows 和 Linux 在线服务器上运行的项目的副本。

我必须查看和分析什么配置才能解决此问题?

在 phpinfo 中它说明了哪个模块处于活动状态。谢谢

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:

    我已经在 .htaccess 文件中发现我做错了什么,按照我在所有 .htaccess 文件中所做的更改。

    RewriteEngine On
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
    
    Options -Multiviews
    RewriteEngine On
    RewriteBase /criate/public
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
    

    只是删除了检查模块是否处于活动状态的条件,我将进一步研究以了解如何在 LINUX 中执行这些条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多