Apache mod_rewrite 在服务器上启用但不工作?

lau*_*kok 2 php apache wordpress

我最近安装了灯堆栈并启用了 mod_rewrite:

$ sudo a2enmod rewrite
$ service apache2 restart
Run Code Online (Sandbox Code Playgroud)

我可以在我的 phpinfo 上看到它:

在此输入图像描述

但是当我尝试在我的 WordPress 中访问如下 URL 时:

http://my-localhost/my-wordpress/whats-on/
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

未找到

在此服务器上找不到请求的 URL /my-wordpress/whats-on/。

Apache/2.4.18 (Ubuntu) 服务器位于 127.0.0.1 端口 80

我还可以做些什么?我错过了什么吗?

有任何想法吗?

我也打开了 .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my-wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my-wordpress/index.php [L]
</IfModule>

# END WordPress
Run Code Online (Sandbox Code Playgroud)

但为什么?

编辑:

我创建了一个简单的测试:

RewriteRule ^test.html$ test.php [L] 
Run Code Online (Sandbox Code Playgroud)

但我得到 404 错误而不是被定向到 test.php

Not Found

The requested URL /mod_rewrite/basic/test.html was not found on this server.

Apache/2.4.18 (Ubuntu) Server at 127.0.1.1 Port 80
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

小智 5

要解决此问题,请按照以下步骤操作:

sudo nano /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)

寻找:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

用。。。来代替:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

退出并保存并使用命令重新启动 apache

sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)

结束 :-)