実現したいこと
・<ドメイン>/test/にアクセスしたときに<ドメイン>/test/public/に内部転送したい
※URLを変更せずリダイレクトしたい
・<ドメイン>/test/actionにアクセスしたときに
/actionへのルート設定を動作させたい(上が実現しないので、こちらも実現できていない状況)
発生している問題・分からないこと
https://juno-engineer.com/article/laravel-xserver-deploy/
こちらを参考にgithubからXserverへデプロイを行いました。
今回はドメインにアクセスしたときではなく、
<ドメイン>/test(Laravelでのプロジェクト名)にアクセスしたときとしたいので
.htaccessを下記に変更して、testディレクトリ内に新規作成しました。
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [QSA,L] </IfModule>
こちらを設定すると 404 NOT FOUNDのエラーが出てしまいます。
他にもRewritebaseで/test/を設定してみたり
publicのパスを test/public/や/test/public/
.env側のAPPURLを「<ドメイン>」や「<ドメイン>/test」にしてみたり
色々試してみましたがどれもうまくいきませんでした。
publicディレクトリの中のhtaccessには下記の設定をしています。
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
Laravelで元々入っていたままです。
こまめに下記のキャッシュクリアも実行してみています。
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear
しかし何も変わりませんでした。
正直まったく理由がわからず、1日費やしましたが解決の糸口も見えずで困っています、、
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
[R=301,L]を指定して外部転送にしたら <ドメイン>/test/publicに転送されたのでhtaccess自体は動作していると思います。R=301を外すと動かなくなるので、内部転送の問題だと思っています。
htaccessでは内部転送の指定ができないというWebサイトも見かけたのですが、よく理解できませんでした。。
補足
PHP 8.2.9
Composer version 2.7.7
Laravel Framework 11.20.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/08/17 05:04