mod_rewrite root_dir no_controller

Я знаю, что это очень популярная тема, и это было ближе всего к моему запросу, но это не решает мою проблему: Как сделать правило перезаписи в php?

Я хотел бы, чтобы www.example.com/hello фактически загрузил этот скрипт: www.example.com/hello.php, также известный как: www.example.com/* to www.example.com/*.php.

Кроме того, я мог бы захотеть передать vars, но всегда иметь первую косую черту в качестве имени сценария, а все последующие — в vars, например,
www.example.com/world/africa
фактически запустит этот скрипт:
www.example.com/world.php?var1=africa
или
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-адресе, который видит конечный пользователь. Я достиг этого с помощью этого правила:
RewriteRule ^dir/(.*)$ /$1

У меня они включены в верхней части файла .htaccess, в documentRoot

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    

person dmayo    schedule 12.04.2012    source источник
comment
После многих попыток я придумал это RewriteRule ^([^.]+?)(/[\w/]*?)$ $1.php?var2=$2, которое приведет к http://www.example.com/bill/wind/surf' serves this script: 'http://www.example.com/bill?var2=/wind/surf. Это будет работать, так как в сценарии $1.php мне просто нужно будет манипулировать var2 как: <?php $var2 = substr($_GET['var2'],1,strlen($_GET['var2'])-2); $qs = explode('/',$var2); array_unshift($qs,count($qs));   -  person dmayo    schedule 13.04.2012
comment
Есть ли более элегантный способ сделать это или более быстрый и эффективный способ?   -  person dmayo    schedule 13.04.2012