如何在任何操作系统上启用 mod_rewrite?

Posted

技术标签:

【中文标题】如何在任何操作系统上启用 mod_rewrite?【英文标题】:How do you enable mod_rewrite on any OS? 【发布时间】:2011-03-09 01:21:51 【问题描述】:

如果我理解正确,我需要在httpd.config 中添加一些内容以启用 mod_rewrite。如果这是真的,我需要在httpd.confapache.conf 中输入什么?请针对操作系统。

【问题讨论】:

查看@FarmerGedden ***.com/a/16814691/4061061的答案 【参考方案1】:

在我的情况下,即使在所有这些配置完成之后也出现了问题(@Pekka 提到了 httpd.conf 和 .htaccess 文件中的更改)。我添加后才解决

<Directory "project/path">
  Order allow,deny
  Allow from all
  AllowOverride All
</Directory>

到 vhost 文件中的虚拟主机配置

于 29/09/2017 编辑(适用于 Apache 2.4 Refer this answer

<VirtualHost dropbox.local:80>
DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
ServerName dropbox.local
ErrorLog "logs/dropbox.local-error.log"
CustomLog "logs/dropbox.local-access.log" combined
<Directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
    # AllowOverride All      # Deprecated
    # Order Allow,Deny       # Deprecated
    # Allow from all         # Deprecated

    # --New way of doing it
    Require all granted    
</Directory>

【讨论】:

【参考方案2】:

为了使用 mod_rewrite,您可以在终端中输入以下命令:

 $ su

 $ passwd **********

 # a2enmod rewrite

之后重启apache2

 # service apache2 restart

 # /etc/init.d/apache2 restart

 # service apache2 restart

【讨论】:

【参考方案3】:

如果它与托管站点有关,请询问您的托管,或者如果您想在本地机器上启用它,请查看这个与在 wamp apache 中启用重写模块相关的 youtube 分步教程 https://youtu.be/xIspOX9FuVU?t=1m43s Wamp 服务器图标 -> Apache -> Apache Modules 并检查 rewrite module 选项 应该检查它,但在那之后 wamp 需要重新启动所有服务

【讨论】:

【参考方案4】:

仅供在 Debian 上使用 Apache2 启用 mod_rewrite 的人参考:

检查 mod_rewrite 是否启用:

通过运行在 mods_enabled 中查找到模块的链接

ls /etc/apache2/mods-enabled | grep rewrite

如果这输出rewrite.load,则启用该模块。 (注意:你到 apache2 的路径可能不是 /etc/,尽管它很可能是。)

如果尚未启用 mod_rewrite,则启用它

启用模块(基本上创建了我们在上面寻找的链接):

a2enmod rewrite

重新加载所有 apache 配置文件:

service apache2 restart

【讨论】:

正是我在解决永久链接 Wordpress 问题时所需要的。感谢您提供我需要的特定 SSH 命令。 完美答案!【参考方案5】:

网络解决方案提供了将 php.ini 放入 cgi-bin 以启用 mod_rewrite 的建议

【讨论】:

我也听说过这个,但我认为这是错误的。我建议只检查 .htaccess 文件的语法以排除任何错误。几乎所有运行 Apache 的服务器(包括 Netsol 的服务器)都默认启用了 mod_rewrite。【参考方案6】:

不,您不应该这样做。 mod_rewrite 是一个 Apache 模块。与php.ini无关。

【讨论】:

【参考方案7】:

模块 rewrite_module 大多数情况下都内置在服务器中

使用 .htaccess

使用 http://www.generateit.net/mod-rewrite/ 的 Mod 重写生成器

【讨论】:

这个答案没有澄清。如果 OP 询问如何启用某些功能,您应该假设它已被禁用。【参考方案8】:

不,mod_rewrite 是一个 Apache 模块,与 PHP 无关。

要激活模块,httpd.conf 中的以下行需要激活:

LoadModule rewrite_module modules/mod_rewrite.so

要查看它是否已经处于活动状态,请尝试将 .htaccess 文件放入包含该行的 web 目录中

RewriteEngine on

如果这在没有引发 500 内部服务器错误的情况下工作,并且 .htaccess 文件被解析,则 URL 重写工作。

【讨论】:

谢谢...如何判断 .htaccess 文件是否被解析? @John 您通常无法在共享主机上自己激活 mod_rewrite:这取决于托管公司。尝试RewriteEngine 看看它是否已经处于活动状态 - 如果不是,你将不得不与他们交谈。 @John 回复您更新后的评论:将asdfasdf 之类的内容写入文件中。那应该会让你获得500 internal server error 是的,好的。它正在被解析。不过,我仍然可以让一个简单的 ReWrite 工作。 @John 它接受RewriteEngine On 没有错误吗?如果是这样,则问题出在您的重写语句上。也许值得提出一个新问题。

以上是关于如何在任何操作系统上启用 mod_rewrite?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ubuntu 上的 LAMP 中启用 mod_rewrite? [关闭]

如何在 PHP CGI 上检查 mod_rewrite

Ubuntu系统启用Apache Mod_rewrite模块

apache mod_rewrite 不工作或未启用

启用mod_rewrite的Chevereto安装

apache2服务器mod_rewrite模块 开启方法[linux, ubuntu]