即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

我怎么能消除“公共/指标。PHP ”的URL生成laravel?

栈溢出 zhelon 89℃ 0评论
本文目录
[隐藏]

1.原始问题:How can I remove “public/index.php” in the url generated laravel?

Basically I need to remove index.php or public/index.php from the the generated URL in laravel, commonly path is localhost/public/index.php/someWordForRoute, It should be something like localhost/someWordForRoute

htacces



Options -MultiViews


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',

how can I change that?

2.被采纳答案

3.Option 1: Use .htaccess

If it isn’t already there, create an .htaccess file in the Laravel root directory.
Create a .htaccess file your Laravel root directory if it does not exists already. (Normally it is under your public_html folder)

Edit the .htaccess file so that it contains the following code:


   RewriteEngine On 
   RewriteRule ^(.*)$ public/$1 [L]

Now you should be able to access the website without the “/public/index.php/” part.

4.Option 2 : Move things in the ‘/public’ directory to the root directory

Make a new folder in your root directory and move all the files and folder except public folder. You can call it anything you want. I’ll use “laravel_code”.

Next, move everything out of the public directory and into the root folder. It should result in something somewhat similar to this:
enter image description here

After that, all we have to do is edit the locations in the laravel_code/bootstrap/paths.php file and the index.php file.

In laravel_code/bootstrap/paths.php find the following line of code:

'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public',

And change them to:

'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',

In index.php, find these lines:

require __DIR__.'/../bootstrap/autoload.php';     
$app = require_once __DIR__.'/../bootstrap/start.php';

And change them to:

require __DIR__.'/laravel_code/bootstrap/autoload.php';     
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';

Source: How to remove /public/ from URL in Laravel

5.其他高票答案

5.1.第1个答案

I tried this on Laravel 4.2

Rename the server.php in the your Laravel root folder to index.php and copy the .htaccess file from /public directory to your Laravel root folder.

I hope it works

5.2.第2个答案

HERE ARE SIMPLE STEPS TO REMOVE PUBLIC IN URL (Laravel 5)

1: Copy all files form public folder and past them in laravel root folder

2: Open index.php and change

From

 require __DIR__.'/../bootstrap/autoload.php';

To

 require __DIR__.'/bootstrap/autoload.php';

And

$app = require_once __DIR__.'/../bootstrap/app.php';

To

$app = require_once __DIR__.'/bootstrap/app.php';

In laravel 4 path 2 is $app = require_once __DIR__.'/bootstrap/start.php'; instead of $app = require_once __DIR__.'/bootstrap/app.php';/app.php

That is it.

5.3.第3个答案

1) Check whether mod_rewrite is enabled. Go to /etc/apache2/mods-enabled directory and see whether the rewrite.load is available. If not, enable it using the command sudo a2enmod rewrite.It will enable the rewrite module. If its already enabled, it will show the message Module rewrite already enabled.
2)Create a virtual host for public directory so that instead of giving http://localhost/public/index.php we will be able to use like that http://example.com/index.php. [hence public folder name will be hidded]
3)Then create a .htaccess which will hide the index.php from your url which shoul be inside the root directory (public folder)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

5.4.第4个答案

This likely has very little to do with Laravel and everything to do with your Apache configs.

Do you have access to your Apache server config? If so, check this out, from the docs:

In general, you should only use .htaccess files when you don’t have
access to the main server configuration file. There is, for example, a
common misconception that user authentication should always be done in
.htaccess files, and, in more recent years, another misconception that
mod_rewrite directives must go in .htaccess files. This is simply not
the case. You can put user authentication configurations in the main
server configuration, and this is, in fact, the preferred way to do
things. Likewise, mod_rewrite directives work better, in many
respects, in the main server configuration.

… In general, use of .htaccess files should be avoided when
possible. Any configuration that you would consider putting in a
.htaccess file, can just as effectively be made in a
section in your main server configuration file.

Source: Apache documentation.

The reason why I mention this first is because it is best to get rid of .htaccess completely if you can,and use a Directory tag inside a VirtualHost tag. That being said, the rest of this is going to assume you are sticking with the .htaccess route for whatever reason.

To break this down, a couple things could be happening:

  1. I note, perhaps pointlessly, that your file is named .htacces in your question. My guess is that it is a typo but on the off chance you overlooked it and it is in fact just missing the second s, this is exactly the sort of minor error that would leave me banging my head against the wall looking for something more challenging.

  2. Your server could not be allowing .htaccess. To check this, go to your Apache configuration file. In modern Apache builds this is usually not in one config file so make sure you’re using the one that points to your app, wherever it exists. Change

    AllowOverride none
    

    to

    AllowOverride all
    

    As a followup, the Apache documents also recommend that, for security purposes, you don’t do this for every folder if you are going to go for .htaccess for rewriting. Instead, do it for the folders you need to add .htaccess to.

  3. Do you have mod_rewrite enabled? That could be causing the issues. I notice you have the tag at the top . Try commenting out those tags and restart Apache. If you get an error then it is probably because you need to enable mod_rewrite:
    How to enable mod_rewrite for Apache 2.2

Hope this helps. I’ve named some of the most common issues but there are several others that could be more mundane or unique. Another suggestion on a dev server? Re-install Apache. If possible, do so from a different source with a good tutorial.

转载请注明:CodingBlog » 我怎么能消除“公共/指标。PHP ”的URL生成laravel?

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情