2014-04-23 147 views
0

我正在研究Apache的重写规则,并且不使用.htaccess,而是写入它们的虚拟主机设置。重写规则不能正常工作

在这里,我有2个问题:

  1. 我可以使用 “重写规则blog_rss.xml blog_rss.php”,但不能使用 “重写规则^ blog_rss.xml $ blog_rss.php”,为什么呢?

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

感谢您回答这个问题。

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

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

'^ blog_rss.xml $'是一个特定的匹配项,因为'.htaccess'位于您的域的根文件夹中,只有当URL为http:// domain.com/blog_rss.xml时才匹配,是这样吗?通过更改标题输出,结果页面如何显示可以修复PHP代码的RSS。 – Prix

+0

嗯我正在使用虚拟主机设置,我不知道它是否与.htaccess的设置相同。那么这意味着^ blog_rss \ .xml $不适合VS设置? 此外,所以我发现第二个问题只能从使用Chrome获得,但Firefox运行良好。 – LittPi

+0

如果你直接在'virtualhost'上使用它,那么是的。这将是错误的,因为'virtualhost'以'/'开头,所以它必须是'^/blog_rss.xml $'而不是你拥有的。 – Prix

回答

0

感谢答案。对于V主机,我终于找到了原因。

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

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