我正在研究Apache的重写规则而不是使用.htaccess但是使用虚拟主机设置来编写它们。
这里我有两个问题:
我可以使用“RewriteRule blog_rss.xml blog_rss.php”,但不能使用“RewriteRule ^ blog_rss.xml $ blog_rss.php”,为什么?
即使第一个脚本正在运行,它也不会改变为我想要的RSS样式。我应该使用重写规则为它设置处理程序吗?
感谢您回答这个问题。
更新:这是关于重写规则的脚本。
<Directory />
<IfModule mod_rewrite.c>
RewriteEngine On
ErrorDocument 404 /error/404.php
RewriteRule ^blog_rss\.xml$ blog_rss.php
</IfModule>
</Directory>
答案 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>
答案 1 :(得分:0)
感谢您的回答。对于V-host,我终于找到了原因。
根据RewriteRule in htaccess vs httpd.conf,目录路径应与网站基本路径相同。例如,如果根目录是/ var / www /,则<Directory>
应设置/ var / www /,否则它将检测服务器的根路径。