如何testing是否启用了mod_rewrite?

我在apache2上build立了一个WordPress的环境,在Ubuntu 12.04的新安装上。

为了获得友好的URLS工作,我试图设置mod_rewrite。 我遵循我在网上find的一些指令,并使用a2enmod。

现在。 重新启动Apache后,我想检查模块是否实际加载。

我发现获取已加载模块列表的命令是这样的:

apache2 -t -D DUMP_MODULES

但是,这会返回一个错误:

apache2:错误的用户名$ {APACHE_RUN_USER}

那么,我该如何列出所有加载的模块,否则检查是否已经启用了mod_rewrite?

KM01意味着apachectl但不会给你你所需要的。 这将控制服务器的启动/停止/重新启动,并提供一些状态信息。 PHP文件选项的作品,但你需要一些额外的工作。 相反,尝试从命令行运行php: $ php -i 。 这只会在命令行输出phpinfo()输出。

您可以通过运行$ apache2 -l来获得已编译模块的列表,但是这对使用LoadModule(或其他)指令查看dynamic加载的模块没有帮助。

您可以通过查看/etc/apache2/mods-enabled/中的条目来查看正在dynamic加载哪些模块。 有些在同一个目录下有一个额外的conf文件进行configuration。 这些模块不会被加载两次。 您可以通过查看/etc/apache2/mods-available/来查看可dynamic加载的模块列表。 您可以使用$ a2enmod <module_name>在命令行中启用它们。 你可以使用$ a2dismod <module_name>来卸载它们。

当你完成启用/禁用,你必须重新启动apache $ service apache2 restart$ apachectl graceful 。 您将需要root(sudo)权限才能完成大部分(如果不是全部)的工作。

1)types<?php phpinfo(); ?> <?php phpinfo(); ?>在一个PHP文件中并保存并在服务器上运行该文件。

2)现在您可以查看信息列表,只需从浏览器的search菜单中search单词“mod_rewrite”即可

3)如果在“加载模块”部分find它,那么这个模块已经加载了,如下图所示,否则你需要进入下一步启用mod_rewrite模块。

来源: http : //roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

你不用apache2命令,你有apachectl命令吗? 它应该和apache2位于同一个位置。 或者您可以使用sudo apache2 -t -D DUMP_MODULES以提升的特权执行命令

PHP的信息并不总是显示你是否启用。 抱歉!

但是, 这个页面上堆栈溢出 确实让你指出了正确的方向。

另外,这里是一些PHP列出他们全部:

 <?php foreach( apache_get_modules() as $module ) echo "$module<br />"; ?> 

就像@Richard解释的那样,但是实际上你需要做的是获得一个包含以下内容的文件:

 <?php phpinfo(); ?> 

这会打印出关于你的apache / phpconfiguration的各种信息。 其他有用的东西,你会发现那里将是如果imagick安装或不。 所有加载的Apache模块也在那里。

在terminaltypes的6.5+上

 httpd -M | grep 'rewrite' 

如果在答案中,你可以看到rewrite_module(共享),这意味着它已经被安装了。你可以删除grep'rewrite'并获取你的Apache安装的所有模块列表。

在terminalhttpd2 -M以susetypes作为root,它提供了一个加载模块的列表。 httpd2 -l只给出编译模块。 这适用于Apache 2.4

只需在你的根目录下创buildmod_rewrite.php文件,并在其中放置下面的代码:

 <?php echo "Mod_rewrite is activated!" ; ?> 

现在重命名您的旧.htaccess文件

只需创build新的.htaccess文件并放置下面的代码。

 RewriteEngine On RewriteRule ^.*$ mod_rewrite.php 

现在点击保存。

然后访问您的网站,你会得到一个消息。