我是友好网址的新手,所以也许缺少基本的东西。
我的htaccess包含:
RewriteRule ^([a-zA-Z0-9-/+]+)/?$ /index.php?surf=$1
在index.php里面我处理这样的请求:
switch ($_GET['surf']) {
case "whatever":
...
所以链接就像domain.com/home,我为了目的使用index.php包含了一个home.php
一切都适用于标准情况,但如果有人输入目录的名称作为参数,如: domain.com/css
页面搞砸了。地址栏显示:http://domain.com/css/?surf=css,内容类似于index.php(home)中的默认大小写,但没有样式等。
我猜它是在htaccess和索引之后尝试访问http://domain.com/css/index.php?surf=css。
我该如何解决这个问题?
*请注意,我希望有一些其他目录中有一些index.php。
答案 0 :(得分:1)
添加以下行:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-/+]+)/?$ /index.php?surf=$1
这可以防止重定向真实文件和文件夹。