如何在 Apache 2.4 上启用 mod_rewrite?

How to enable mod_rewrite on Apache 2.4?

我正在使用 Wordpress 并想启用漂亮的网址功能,但它们不起作用,我认为这是因为 mod_rewrite,但我不知道如何启用它CentOS 7下的Apache 2.4...

我已经试过了:

grep -i LoadModule /etc/httpd/conf/httpd.conf | grep rewrite

但是什么都没有... 还想知道它加载所有 Apache 模块有什么不好的后果还是不好的做法?

Apache2 附带可执行文件 a2enmoda2dismod,它们将完成所有 "dirty work" 的符号链接配置文件。

在基于 Debian 的发行版上,通常的位置是 /etc/apache/mods-available/。以下是 .conf 配置文件(如果适用)和每个模块的 .load 文件,带有 LoadModule Apache2 指令。如果在 /etc/apache2/mods-enabled/.

中存在指向其 .load 文件的符号链接,则启用模块

例如,您可以使用命令启用重写模块

$ a2enmod rewrite

我找到了知道模块是否加载的方法,这里是列出启用模块的命令:

apachectl -M | sort

它将按字母顺序列出所有启用的模块。

Wordpress 有一个 .htaccess,但默认启用 rewrite_module 供其使用:

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

我唯一要做的就是将其添加到 vhost.conf 文件中 /etc/httpd/conf.d/vhosts.conf

<Directory /var/www/mysite>
    Options Indexes FollowSymLinks
    Require all granted
    AllowOverride All
</Directory>

那是因为我在该文件中处理我的主机。但它可以在 httpd.conf 或包含在 httpd.conf

中的任何其他 .conf 文件中完成

谢谢...

# nano /etc/httpd/conf/httpd.conf

找到

follow (AllowOverride none) 

并更改它

(AllowOverride All) 

对于重写模块,只需检查这个与在 wamp apache 中启用重写模块相关的 youtube 分步教程 https://youtu.be/xIspOX9FuVU?t=1m43s
Wamp 服务器图标 -> Apache -> Apache 模块并标记为检查重写模块选项
之后你可以使用url重写

httpd.conf中搜索AllowOverride None并将其更改为AllowOverride全部,然后重启apache

是的,从 "Override None" 更改为 "Override All" 使其生效:

Debian 10 配置文件在这里:

/etc/apache2/apache2.conf

我不知道安全风险,但它有效!

仅限 CentO 7 : a2enmod 是一个 Debian/Ubuntu 命令。您需要为 CentOS 服务器编辑 Apache 配置 文件。

您要做的是编辑 /etc/httpd/conf/httpd.conf 文件并确保 AllowOverride 标志因为块从 None 更改为 All.

基本上应该是这样的: (注意:默认httpd.conf文件中有很多注释行)

<目录“/var/www/html”> 允许覆盖所有