我刚刚完成了关于如何在 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
答案1
语法是相同的,但您必须确保根据您的要求将规则放在 httpd.conf 文件(或 vhosts.conf 或适合您的发行版的任何文件)中的正确位置。
因此,如果您的重写规则特定于某个虚拟主机,则重写规则将进入该虚拟主机的容器。如果规则是全局的(例如影响所有站点),那么您可以将其放在 httpd.conf 文件中的任何位置。
文档mod_rewrite和语境应该是这方面的有用参考。如果您要进行大量此类工作,那么 Apache 书籍值得投资!
出于兴趣,为什么您要避免为此使用 .htaccess 文件? .htaccess 文件中的更改是即时的,而 httpd.conf 等中的更改则需要重新启动 apache 才能生效。
答案2
我知道这是个傲慢的回答 - 但这确实是正确的 - RTFM!(对于任何假正经的人来说,F 代表“很好”,如果你读到别的东西,那是因为你满口脏话,不是我)
Apache 文档清楚地说明了指令可以在何处(即在什么上下文中)使用。如果有疑问,对于每个可以使用的指令,它总是有白纸黑字的说明。如果您要管理 Apache,您就无法避免学习阅读 Apache 文档。
在这种情况下,它表示您可以在“服务器配置、虚拟主机、目录、.htaccess”中使用 RewriteRule。(http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule)
回答你的另一个问题,不,语法没有改变。实际上,你很可能使用的是命名虚拟主机,因此重写规则的逻辑位置是在相关的 VirtualHost 指令内。
巴特。