Mod rewrite mod_重写根目录no_控制器

Mod rewrite mod_重写根目录no_控制器,mod-rewrite,rootview,Mod Rewrite,Rootview,我知道这是一个非常流行的话题,这是最接近我要求的话题,但它并不能解决我的问题: 我想www.example.com/hello实际加载此脚本:www.example.com/hello.php,又名:www.example.com/*到www.example.com/*.php 此外,我可能希望传递vars,但始终使用第一个斜杠作为脚本名,其后的任何斜杠都是vars,例如 www.example.com/world/africa 将实际运行此脚本: www.example.com/world.p

我知道这是一个非常流行的话题,这是最接近我要求的话题,但它并不能解决我的问题:

我想
www.example.com/hello
实际加载此脚本:
www.example.com/hello.php
,又名:
www.example.com/*
www.example.com/*.php

此外,我可能希望传递vars,但始终使用第一个斜杠作为脚本名,其后的任何斜杠都是vars,例如
www.example.com/world/africa

将实际运行此脚本:
www.example.com/world.php?var1=非洲


www.example.com/beach/us/michigan

将运行:
www.example.com/beach.php?var1=us&var2=michigan

我没有一个控制器参与,并希望保持这种方式。我在一个非常小的网站上工作,最多10页

我已经尝试了很多次迭代,但最接近的方法是:
www.example.com/dir/hello
加载
www.example.com/hello.php
但是我不希望最终用户在URL中看到额外的目录。我用这个规则做到了:
重写规则^dir/(.*)$/$1

我在documentRoot中的.htaccess文件顶部启用了这些

RewriteEngine on  
RewriteBase /   
我已经把条件注释掉了。现在这些都不适合我(Apache2)。在下面的列表中,我尝试了许多带有前斜杠的变体,没有它们,等等。有什么想法吗

#RewriteCond %{REQUEST_FILENAME}.php -f  
#RewriteRule ^(.*)$  $1.php  
#RewriteRule .* $0.php  
#RewriteCond %{DOCUMENT_ROOT}/$0.php -f  
#RewriteRule .* /$0.php [L]  
#RewriteRule ^/([^.]+)$ /$1.php  
#RewriteRule ^([^/]+).*$ $1.php  
#Rewritstrong texteCond %{REQUEST_FILENAME} !-f  
#RewriteCond %{REQUEST_FILENAME} !-d  
#RewriteRule ^(.*)$ index.php?page=$1  
#RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php?page=$1 [L,QSA]  
# this works but shows 'dir' in URI: RewriteRule ^dir/(.*)$ /$1.php  
#RewriteRule (^|/)([^.]+)$ $2.php [QSA]  
#RewriteRule (.*) /$1.php  
#RewriteRule ^([^/]+)/$ /$1.php    

经过多次尝试,我想出了这个
RewriteRule^([^.]+?)(/[\w/]*?)$$1.php?var2=$2
,这将导致
http://www.example.com/bill/wind/surf'服务于此脚本:'http://www.example.com/bill?var2=/wind/surf
。这将起作用,就像在$1.php脚本中一样,我只需要操纵var2:
有没有更优雅的方法来实现这一点,或者更快更有效的方法?