【问题标题】:.htaccess Is Not working in Linux(Debian) Apache2.htaccess 在 Linux(Debian) Apache2 中不起作用
【发布时间】:2014-05-12 22:30:56
【问题描述】:

我正在使用 apache2(我的虚拟服务器),它已经与我的 Debian 一起安装。一切都很好,但现在我的.htaccess有问题

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

它不工作
我认为这是因为我使用的是 apache2 版本,可能是我的代码有问题,或者我必须在我的服务器上 config

如果我的网址输入错误或不可用,我想将其重定向到主索引页面

【问题讨论】:

  • 你到底想用你的网址做什么?从什么变成什么?另外为什么你的代码中有两个RewriteCond %{REQUEST_FILENAME} !-f
  • 第二个是{REQUEST_FILENAME}!-l
  • 好的,那么 url 呢?你把它从什么改成什么?
  • 我想把它改成索引页
  • 您要显示旧网址还是新网址?

标签: apache .htaccess mod-rewrite debian


【解决方案1】:

这段代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,R]

如果文件不存在,会将http://example.com/test.php 重定向到http://example.com/index.php?url=test.php。我的代码和你的代码之间的唯一区别是我有 [R] 而不是 [QSA,L] 如果它仍然对你不起作用并且你在根文件夹中有 htaccess 文件,我认为它不是一个htaccess文件问题

【讨论】:

    【解决方案2】:

    花了一整天的时间,我得到了答案

    在文件夹
    apache2>>sites-available>> 有一个名为 default

    的文件

    默认情况下我们必须更改它

    发件人:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
    

    到:

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    

    它的工作。它允许使用 .htaccess 文件。

    【讨论】:

    • 谢谢,这行得通。但我在 /etc/apache2/apache2.conf 中为 Debian 更改了它
    • 在此处对Indexes 进行注释。我将允许用户浏览你的 image/css/js 文件夹。
    • 谢谢,这解决了我在 CentOS7 上的问题。但文件是/etc/httpd/conf/httpd.conf
    【解决方案3】:

    我想补充一点,/etc/apache2/mods-available/rewrite.load 需要启用:

    a2enmod rewrite
    

    在 Debian 上,我认为它是默认启用的,但我的不是。

    【讨论】:

    • 通过破坏它(添加垃圾文本)来测试是否首先启用 .htaccess 以产生 500 错误很有用。然后,如果 .htaccess 正常工作,但您仍然得到 404 页,这可能是原因
    【解决方案4】:

    需要注意的是,AllowOverride 仅适用于 &lt;Directory&gt; 指令,如果放在 &lt;Location ...&gt; 部分中,则会被忽略;这是我的问题,我花了很长时间。

    仅在部分可用 AllowOverrideList 仅有效 在没有正则表达式指定的部分中,而不是在 ,或部分。

    https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 1970-01-01
      • 2018-12-02
      • 2013-03-22
      • 2014-10-10
      • 2016-06-14
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多