.htaccess在Linux(Debian)Apache2中不起作用

VIK*_*ASH 7 apache .htaccess mod-rewrite debian

我正在使用apache2(我的虚拟服务器)已经安装了我的Debian.一切顺利,但现在我的问题.htaccess

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

它不起作用
我认为它是因为我使用的apache2版本以及我的代码或我必须在我的服务器上配置的问题

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

VIK*_*ASH 29

花了一整天后,我得到了答案

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

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

从:

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
Run Code Online (Sandbox Code Playgroud)

至:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

它的工作.它启用了.htaccess文件.

  • 谢谢,那是有效的.但我在/etc/apache2/apache2.conf中为Debian更改了它 (3认同)

TFo*_*otH 11

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

a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

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

  • 首先通过破坏 .htaccess(添加垃圾文本)以产生 500 错误来测试 .htaccess 是否已启用非常有用。然后,如果 .htaccess 正常工作,但您仍然得到 404 页面,这可能是原因 (2认同)

How*_*wli 1

这段代码:

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

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