如何在任何操作系统上启用 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.conf
或apache.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? [关闭]