在不使用 .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:我想您需要将其放入描述文档根目录的<Directory>
部分。以上是关于在不使用 .htaccess 文件的情况下,我应该将 RewriteRules 放在 Apache2 的哪里?的主要内容,如果未能解决你的问题,请参考以下文章
在不使用 .htaccess 的情况下在 Wordpress 网站上重定向非 www
CodeIgniter:是不是可以在不使用 .htaccess 的情况下删除 index.php?
有没有办法在不使用mod_rewrite和.htaccess的情况下重写我的网址?