在不使用 .htaccess 文件的情况下,我应该将 RewriteRules 放在 Apache2 的哪里?

Posted

技术标签:

【中文标题】在不使用 .htaccess 文件的情况下,我应该将 RewriteRules 放在 Apache2 的哪里?【英文标题】:Where do I put RewriteRules in Apache2 without using .htaccess files? 【发布时间】:2011-04-16 22:10:37 【问题描述】:

我想在不使用 .htaccess 文件的情况下配置 mod_rewrite 规则。当我将规则放入 .htaccess 文件时,它们可以正常工作,但我更愿意将所有配置留在我的 /etc/apache2/sites-available/[site name] 配置文件中。

当我在 VirtualHost 或 Directory 指令中放置相同的 RewriteRules 时,没有任何效果。我究竟做错了什么?这是我的 VirtualHost 配置文件中的一个示例:

<Directory />
 Options FollowSymLinks
 # AllowOverride is on for the .htaccess files to work
 AllowOverride All
 RewriteEngine On
 RewriteRule ^oldsite\.php$ newsite.php
</Directory>

我想我可能忽略了 apache2.conf 文件中的某些指令,但我不确定。帮助。 :)

【问题讨论】:

【参考方案1】:

您使用的是RewriteRule pattern that is meant for an .htaccess file。原因:

在 .htaccess 文件中使用重写引擎时,每个目录的前缀(对于特定目录始终相同)会自动删除以进行模式匹配并自动添加 em> 替换完成后。

所以用完整的 URL 路径试试这个规则:

RewriteRule ^/oldsite\.php$ /newsite.php

【讨论】:

非常感谢您的快速响应。当我将它放在 Directory 指令中时它不起作用,但我将它移到 VirtualHost 并且它现在工作正常。知道为什么吗? @user358036:我想您需要将其放入描述文档根目录的&lt;Directory&gt; 部分。

以上是关于在不使用 .htaccess 文件的情况下,我应该将 RewriteRules 放在 Apache2 的哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在不使用 .htaccess 的情况下在 Wordpress 网站上重定向非 www

CodeIgniter:是不是可以在不使用 .htaccess 的情况下删除 index.php?

有没有办法在不使用mod_rewrite和.htaccess的情况下重写我的网址?

Drupal 7 重写不使用 .htaccess

如何在不更改浏览器中的 URL 的情况下使用 htaccess 进行重定向

如何在不破坏图像、CSS 和 JavaScript 的情况下实现友好的 URL? [关闭]