Php Laravel 5.2漂亮的URL

Php Laravel 5.2漂亮的URL,php,.htaccess,laravel,laravel-5.2,vhosts,Php,.htaccess,Laravel,Laravel 5.2,Vhosts,除了('/'),我如何切换到并使其他路由正常工作 解决方案1: vhost文件: <VirtualHost *:80> DocumentRoot "/var/www/html/domain/public" ServerName domain.com <Directory "/var/www/html/domain/public"> AllowOverride All Allow from All <

除了
('/')
,我如何切换到并使其他路由正常工作

解决方案1:

vhost文件:

<VirtualHost *:80>   
    DocumentRoot "/var/www/html/domain/public"
    ServerName domain.com
    <Directory "/var/www/html/domain/public">
        AllowOverride All
        Allow from All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<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]
</IfModule>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
---更新2--- php artisan路由:列表结果为

+--------+----------+---------+------+---------+------------+
| Domain | Method   | URI     | Name | Action  | Middleware |
+--------+----------+---------+------+---------+------------+
|        | GET|HEAD | /       |      | Closure | web        |
|        | GET|HEAD | myroute |      | Closure | web        |
+--------+----------+---------+------+---------+------------+

您需要在web服务器的配置文件中正确设置虚拟主机。设定

对于Apache,您可以使用以下指令:

DocumentRoot "/path_to_aravel_project/public"
<Directory "/path_to_aravel_project/public">

这就是我在项目中处理这些问题的方式。有两个步骤

1.在/public目录中创建一个包含以下内容的新.htaccess文件:

<VirtualHost *:80>   
    DocumentRoot "/var/www/html/domain/public"
    ServerName domain.com
    <Directory "/var/www/html/domain/public">
        AllowOverride All
        Allow from All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<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]
</IfModule>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

选项-多视图
重新启动发动机
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
2。项目根目录中有一个名为server.php的文件。。(应用程序、公共等的父项)。

将其重命名为index.php


而且它应该会起作用。。没有任何麻烦。

是的,每个答案都很好地工作,但在此之前我发现apache重写模块mod_rewrite应该已经被激活


在ubuntu控制台上:
a2enmod rewrite
解决了我的问题。

您的虚拟主机应该指向公用文件夹,不需要任何解决方法和技巧,它应该像现在一样工作。我们可以看看你是如何定义你得到404的路由的吗?虚拟主机应该可以正常工作。从你的描述来看,似乎你没有;t对拉威尔的工作原理有了初步的了解。入口点总是
index.php
,即使我们将virtualhost指向公共目录,所有请求都会到达
index.php
文件,然后该文件会根据需要引导和路由请求。所有路由都应该可以正常工作。@我已经更新了帖子。您是否在domain.com的/etc/hosts文件中添加了条目?假设您没有为您的工作站设置任何其他ip,它应该看起来像
127.0.0.1 domain.com
。@saji89是的,但我们会知道问题是vhost还是路由。谢谢,但我的配置已经这样设置了。如果这样设置配置,我将无法访问我的路由。请向我显示您尝试使用
php artisan路由:list
输出的URL。另外,你是否编辑了
.htaccess
index.php
?我已经更新了帖子。不,我没有更改.htaccess或index.php。顺便问一下。为什么您的路线是
myroute
,但它显示
myroute
?当您尝试转到
http://domain.com/myroute
error.log
是否显示任何内容?路线是myRoute,很抱歉输入错误。error.log没有显示任何内容。我刚从浏览器中得到响应:在此服务器上找不到请求的URL/myroute。很抱歉打扰你,我几个小时都在想到底出了什么问题。对我来说一直都很有用。。你能分享一下你观察到的变化吗?或者根本没有任何变化。。