使用没有.htaccess文件的Apache重写模块

我刚刚完成了本教程(和其他人)关于如何使用Apache的mod_rewrite: http : //www.workingwith.me.uk/articles/scripting/mod_rewrite 。 但是,他们都专注于使用.htaccess文件来重写URL

你怎么能从apache.conf / httpd.conf文件中使用这个重写引擎模块,或者只是在'/ etc / apache2 / sites-enabled'目录中使用这个重写引擎模块。 如何做到这一点所需的任何额外的语法的例子将是有用的。

我有root权限访问我的系统,所以我宁愿避免使用.htaccess文件,如果可能的话。 我的系统是Ubuntu-Server 10.04

语法是一样的,但您必须确保您将规则放在httpd.conf文件(或vhosts.conf或适合您的发行版的任何内容)的正确位置,具体取决于您的要求。

因此,如果您的重写规则特定于特定的虚拟主机,则重写规则将进入该虚拟主机的容器中。 如果规则是全局的(比如影响所有的站点),那么你可以把它放在httpd.conf文件的任何地方。

有关mod_rewrite和上下文的文档应该是有用的参考。 一本阿帕奇书是值得投资,如果你会做很多这个!

出于兴趣,为什么要避免使用.htaccess文件呢? .htaccess文件的变化是立竿见影的,而httpd.conf等的变化需要重启apache才能生效。

我知道这是一个暴躁的答案 – 但它确实是正确的 – RTFM! (如果你读了别的东西,这是因为你有一个便盆,而不是我)

Apache文档清楚地说明了可以使用哪些指令(即在什么情况下)。 如果有疑问的话,每一个你可以使用的指令总是以黑白的方式出现。 如果你要pipe理Apache,你无法避免学习阅读Apache文档。

在这种情况下,它表示可以在“服务器configuration,虚拟主机,目录,.htaccess”中使用RewriteRule。 ( http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

要回答你的其他问题,不,语法不会改变。 在现实中,你正在使用命名的虚拟主机,所以你的重写规则的逻辑位置在相关的VirtualHost指令中。

巴特。