Laravelで生成されたURLからindex.php
またはpublic/index.php
を削除する必要があります。一般的にパスはlocalhost/public/index.php/someWordForRoute
です、それはlocalhost/someWordForRoute.
のようなものであるべきです
。htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes.
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php[L]
app/config/app.php
'url' => 'http://localhost',
どうすれば変更できますか?
まだ存在しない場合は、Laravelルートディレクトリに.htaccessファイルを作成します。 Laravelルートディレクトリに.htaccess
ファイルが存在しない場合は、作成します。 (通常はpublic_html
フォルダの下にあります)
次のコードが含まれるように.htaccessファイルを編集します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
これで、 "/ public/index.php /"部分がなくてもWebサイトにアクセスできるはずです。
ルートディレクトリに新しいフォルダを作成し、パブリックフォルダを除くすべてのファイルとフォルダを移動します。あなたはそれをあなたが望む何でも呼ぶことができます。 "laravel_code"を使います。
次に、すべてをパブリックディレクトリからルートフォルダに移動します。これは次のようなものになるはずです。
その後、laravel_code/bootstrap/paths.php
ファイルとindex.php
ファイルの場所を編集するだけです。
laravel_code/bootstrap/paths.php
で、次のコード行を見つけます。
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public',
そしてそれらを次のように変更します。
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',
index.php
で、以下の行を見つけます。
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
そしてそれらを次のように変更します。
require __DIR__.'/laravel_code/bootstrap/autoload.php';
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
私はこれをLaravel 4.2で試しました
Laravelルートフォルダのserver.php
をindex.php
に名前変更し、.htaccess
ディレクトリからLaravelルートフォルダに/public
ファイルをコピーします。
うまくいくことを願っています
URLの公開を削除するための簡単な手順はこちら(Laravel 5)
1:すべてのファイルをパブリックフォルダからコピーして、それらを下位のルートフォルダに貼り付けます。
2:index.phpを開いて変更する
から
require __DIR__.'/../bootstrap/autoload.php';
に
require __DIR__.'/bootstrap/autoload.php';
そして
$app = require_once __DIR__.'/../bootstrap/app.php';
に
$app = require_once __DIR__.'/bootstrap/app.php';
レベル4では、パス2は$app = require_once __DIR__.'/bootstrap/start.php';
ではなく$app = require_once __DIR__.'/bootstrap/app.php';/app.php
です。
それだ。
私が使っている以下のスニペットを他のオプションと混同しないでください。あなたにとっても役に立つでしょう。下のhtaccesをあなたのルートに置きます。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
あなたの公開ディレクトリに行き、以下のコードスニペットで別のhtaccessファイルを置きます。
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php from ExpressionEngine URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
その作業...
Laravel .htaccess以下で使用します
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
1)mod_rewriteが有効になっているか確認してください。 /etc/Apache2/mods-enabled
ディレクトリに移動して、rewrite.load
が使用可能かどうかを確認してください。そうでなければ、コマンドSudo a2enmod rewrite
を使用してそれを有効にします。それは書き換えモジュールを有効にします。すでに有効になっている場合は、メッセージModule rewrite already enabled
が表示されます。
2)パブリックディレクトリ用の仮想ホストを作成して、http://localhost/public/index.php
を指定する代わりに、そのhttp://example.com/index.php
を使用できるようにします。 [したがって、パブリックフォルダ名は隠されます]
3)次に、ルートディレクトリ(パブリックフォルダ)の内側にあるindex.phpをあなたのURLから隠す.htaccessを作成します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
これはLaravelとはほとんど関係がなく、あなたのApacheの設定に関係することはほとんどないでしょう。
あなたのApacheサーバー設定にアクセスできますか?もしそうなら、ドキュメントから、これをチェックしてください:
一般的に、メインサーバーの設定ファイルにアクセスできない場合にのみ.htaccessファイルを使用してください。たとえば、ユーザー認証は常に.htaccessファイルで行われるべきだという一般的な誤解があり、最近では、mod_rewriteディレクティブが.htaccessファイルに含まれる必要があるという別の誤解があります。これは事実ではありません。ユーザ認証設定をメインサーバ設定に入れることができます。これは、実際には好ましい方法です。同様に、mod_rewriteディレクティブは多くの点でメインサーバーの設定でよりうまく機能します。
...一般的には、.htaccessファイルの使用はできるだけ避けるべきです。あなたが.htaccessファイルに入れることを考えているどんな構成も、あなたのメインサーバー構成ファイルのセクションで同じくらい効果的に作ることができます。
出典: アパッチドキュメント 。
私が最初にこれに言及するのは、可能であれば.htaccess
を完全に取り除くことが最善であり、Directory
タグの内側にVirtualHost
タグを使用することが最善の理由です。それが言われて、これの残りはあなたが何らかの理由で.htaccess
ルートに固執していると仮定することになるでしょう。
これを打破するために、いくつかのことが起こり得る:
あなたの質問では、あなたのファイルは.htacces
という名前であることに注意してください。それはタイプミスですが、見逃していたのですが、実際には2秒目を見逃していますが、これはまさにマイナーエラーの一種です。 。
サーバーは.htaccess
を許可できませんでした。これを確認するには、Apacheの設定ファイルに行きます。最近のApacheビルドでは、これは通常1つの設定ファイルには含まれていないので、存在する場所にかかわらず、自分のアプリケーションを指すものを使用していることを確認してください。変化する
AllowOverride none
に
AllowOverride all
フォローアップとして、Apacheの文書では、セキュリティ上の理由から、書き換えのために.htaccess
を使用する予定がある場合は、これをすべてのフォルダーに対して実行しないことをお勧めします。代わりに、あなたが.htaccess
を追加する必要があるフォルダのためにそれをしてください。
mod_rewrite
が有効になっていますか?それが問題を引き起こしている可能性があります。 <IfModule mod_rewrite.c>
の一番上にタグがあります。それらのタグをコメントアウトして、Apacheを再起動してください。エラーが発生した場合は、おそらくmod_rewrite
を有効にする必要があるためです。 Apache 2.2でmod_rewriteを有効にする方法
お役に立てれば。私は最も一般的な問題のいくつかを挙げましたが、もっと平凡または独特であるかもしれない他のいくつかがあります。開発サーバー上で別の提案? Apacheを再インストールしてください。可能であれば、良いチュートリアルを使って別のソースから実行してください。
LaravelにはすでにかなりのURL .htaccessが付属しています...そのまま使用するのが良いでしょう... http://laravel.com/docs/installation#pretty-urls
Mod_rewriteが有効になっていること、およびホームパスがアプリケーションのパブリックディレクトリに設定されていることを確認してください。
Laravel 4&5:の場合
server.php
をindex.php
に名前変更します.htaccess
ディレクトリから/public
ディレクトリをLaravelルートフォルダにコピーします。それでおしまい !! :)
それが私のためにしたようにこれが役立つことを願っています。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
プロジェクト用にLaravel 5をインストールしましたが、ルートにserver.php
というファイルがあります。
それをindex.php
に変更してください、そしてそれは働くか、またはターミナルでタイプします:
$cp server.php index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
これを.htaccessで使用してサーバーを再起動します。
.htaccessファイルを編集した後で、Rewrite Engineがオンになっていることも確認してください。
Sudo a2enmod rewrite
これを行うには、以下の手順を実行する必要があります。
自分のドメインを自分のプロジェクトのパブリックフォルダ(すなわち/ var/www/html/yourproject/public)にマッピングします(Linuxを使用している場合)。
あなたのパブリックフォルダに移動し、そこで.htaccess
ファイルを編集します
AddHandler application/x-httpd-php72 .php
<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 non-www to www
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# Redirect non-http to https
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Remove index.php
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
</IfModule>
https
なしで直接ルートにアクセスしているのであればそれを守ります。Laravelルートフォルダのserver.php
をindex.php
に名前変更し、.htaccess
ディレクトリからLaravelルートフォルダに/public
ファイルをコピーします。