0

我知道这是一个非常受欢迎的话题,这是最接近我的要求,但它并没有解决我的问题:如何在 php 中制定重写规则?

我想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=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    
4

0 回答 0