我知道这是一个非常受欢迎的主题,这是我最接近我的请求,但它无法解决我的问题:How do I make a rewrite rule in php?
我希望www.example.com/hello
实际加载此脚本:www.example.com/hello.php
,又名:www.example.com/*
到www.example.com/*.php
。
此外,我可能想传递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