11

我想在不使用 .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 文件中的一些指令,但我不确定。帮助。:)

4

1 回答 1

5

您正在使用RewriteRule适用于 .htaccess 文件的模式。原因:

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

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

RewriteRule ^/oldsite\.php$ /newsite.php
于 2010-09-24T17:57:57.763 回答