Mod rewrite 如果不使用.htaccess文件,我应该在Apache2中将重写规则放在哪里?

Mod rewrite 如果不使用.htaccess文件,我应该在Apache2中将重写规则放在哪里?,mod-rewrite,apache2,virtualhost,Mod Rewrite,Apache2,Virtualhost,我想在不使用.htaccess文件的情况下配置mod_重写规则。当我把规则放在.htaccess文件中时,它们工作得很好,但我更愿意把所有配置都放在/etc/apache2/sites/sites-available/[site-name]配置文件中 当我在VirtualHost或Directory指令中放置相同的重写规则时,什么都不起作用。我做错了什么?以下是我的VirtualHost配置文件中的一个示例: <Directory /> Options FollowSymLinks

我想在不使用.htaccess文件的情况下配置mod_重写规则。当我把规则放在.htaccess文件中时,它们工作得很好,但我更愿意把所有配置都放在/etc/apache2/sites/sites-available/[site-name]配置文件中

当我在VirtualHost或Directory指令中放置相同的重写规则时,什么都不起作用。我做错了什么?以下是我的VirtualHost配置文件中的一个示例:

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

选项如下符号链接
#AllowOverride已启用,以使.htaccess文件正常工作
允许超越所有
重新启动发动机
重写规则^oldsite\.php$newsite.php
我想我可能忽略了apache2.conf文件中的一些指令,但我不确定。帮助:)

您正在使用一个。原因是:

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

因此,请使用完整URL路径尝试此规则:

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

非常感谢您的快速回复。当我把它放在Directory指令中时,它不会工作,但是我把它移到了VirtualHost,现在它工作得很好。知道为什么吗?@user358036:我想你需要把它放到描述文档根的
部分。