.htaccess文件中的mod_rewrite规则出现问题

时间:2009-08-16 10:52:05

标签: apache .htaccess mod-rewrite

这是我的.htaccess文件,但它无效。没有重定向任何URL。帮助我。

RewriteEngine on
RewriteRule ^home index.php
RewriteRule ^contactus index.php?file=c-contactus
RewriteRule ^course_registration index.php?file=c-course_registration
RewriteRule ^ncplhpage index.php?file=c-ncplhpage
RewriteRule ^scplhpage index.php?file=c-scplhpage
RewriteRule ^corporatetra index.php?file=c-corporatetra

1 个答案:

答案 0 :(得分:0)

您可能需要设置RewriteBase。

但是,我怀疑问题是在所有情况下缺少a / before index.php,即

RewriteEngine on
RewriteRule ^home /index.php

作为一个侧面,您是否考虑将指令组合成单个指令,如:

RewriteRule ^(home|contactus|course_registration|ncplhpage|scplhpage|corporatetra)$ /index.php?file=c-$1

?您可以更进一步,将名称检查传递到index.php文件本身,即。

RewriteRule ^([_a-z]+)$ /index.php?file=c-$1

请记住,index.php应该检查请求的$ _GET ['file']是否有效。仅仅因为你有像/ contactus这样的公共网址并不意味着有人仍然无法直接输入/index.php?file=c-contactus(试试吧!)。这意味着他们可以输入/index.php?file=c-../../../../etc/passwd。因此,请确保您的index.php也进行了一些健全性检查。这对于安全性来说都是好的,但也意味着您可以避免将URL硬编码到.htaccess文件中。