実現したいこと
URLの「.php」拡張子をなくしたい。
発生している問題・分からないこと
litespeedサーバーを契約しました。
URLの「.php」を省略してアクセスしたく、検索して.htaccessファイルを変更してみましたが、うまくいきませんでした。
該当のソースコード
.htaccessに追記したもの
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php </IfModule>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
検索するとlitespeedではできなかったと書いている書き込みも発見しましたが、方法はないのでしょうか。
>検索して.htaccessファイルを変更してみましたが、うまくいきません
どう変更して、どう想定と違ううごきなのでしょうか?
なんか、出来そうですけどね。
openlitespeedですよね?
https://docs.openlitespeed.org/config/rewriterules/
Apacheとの互換性もあると書いてある
https://ja.linux-console.net/?p=9916
(てか、大抵のWebサーバでhtaccessは互換性ありそうなきもするんですけど)
.htaccessファイルの変更した点を追記しました。
想定では、サーバーに置いた「hoge.php」にURL「~/hoge」でアクセスしたいのですが、変更前も変更後も404エラーが出てしまいます。
サーバーはロリポップのlitespeed版です。それがopenlitespeedであるかは不明でした。
IfModuleの外に書くかそれ自体を消してみるとどうなりますか?これで上手く動作することもあります。
それと、サーバーの再起動が必要なケースもあります。
まずは簡単にhtaccess自体が上手く動作するかどうかの確認をすると、わかりやすいと思うのですがそれは難しそうでしょうか?
https://~~~/hoge でアクセスすると、お書きのコードだと、上から順にチェックされるので、
RewriteRule . /index.php [L]
に合致して、/index.php を返そうとします。
404 ということは、ドキュメントルート直下に index.php というファイルが無いのでは?
> サーバーに置いた「hoge.php」にURL「~/hoge」でアクセスしたいのですが、
は、
RewriteRule . /index.php
の示す「何であってもindex.php にアクセスする」と矛盾しますが、
両者間でどう折り合いを付けたいのでしょうか?
https://~~~/hoge に対して、
・ドキュメントルート直下に hoge.php が存在すればそれにアクセスする
・ドキュメントルート直下に hoge.php が存在しなければ /index.php にアクセスする
ですかね?
コードを書くには「どうしたいのか」を正確に決める必要があります。
回答1件
あなたの回答
tips
プレビュー