重写规则运作不佳

时间:2014-04-23 04:30:14

标签: apache mod-rewrite url-rewriting apache2 rewrite

我正在研究Apache的重写规则而不是使用.htaccess但是使用虚拟主机设置来编写它们。

这里我有两个问题:

  1. 我可以使用“RewriteRule blog_rss.xml blog_rss.php”,但不能使用“RewriteRule ^ blog_rss.xml $ blog_rss.php”,为什么?

  2. 即使第一个脚本正在运行,它也不会改变为我想要的RSS样式。我应该使用重写规则为它设置处理程序吗?

  3. 感谢您回答这个问题。

    更新:这是关于重写规则的脚本。

    <Directory />
     <IfModule mod_rewrite.c>
      RewriteEngine On
      ErrorDocument 404 /error/404.php
      RewriteRule ^blog_rss\.xml$ blog_rss.php
     </IfModule>
    </Directory>
    

2 个答案:

答案 0 :(得分:0)

不,你不应该设置handler。这样做会强制blog_rss.php的PHP代码以XML格式执行。这将导致整个文件以XML Mime类型响应,这可能会带来重大安全问题

但是,在完成响应之前的blog_rss.php文件中,您可能希望将响应类型设置为RSS文件的响应类型。

<强> blog_rss.php

header('Content-Type: text/xml');

<强>抗宿主

<Directory />
 <IfModule mod_rewrite.c>
  RewriteEngine On
  ErrorDocument 404 /error/404.php
  RewriteRule ^blog_rss\.xml$ blog_rss.php
 </IfModule>
</Directory>

资源:electrictoolbox.com

答案 1 :(得分:0)

感谢您的回答。对于V-host,我终于找到了原因。

根据RewriteRule in htaccess vs httpd.conf,目录路径应与网站基本路径相同。例如,如果根目录是/ var / www /,则<Directory>应设置/ var / www /,否则它将检测服务器的根路径。