これは非常に人気のあるトピックであり、これが私の要求に最も近いものであることは知っていますが、問題は解決しません: PHP で書き換えルールを作成するにはどうすればよいですか?
www.example.com/hello
実際にこのスクリプトをロードしたいと思います: www.example.com/hello.php
, aka: 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