xampp apache重写不起作用

Posted

技术标签:

【中文标题】xampp apache重写不起作用【英文标题】:xampp apache rewrite not working 【发布时间】:2016-06-21 00:00:47 【问题描述】:

我在 htdocs 中有一个名为 crm 的文件夹,其中包含一个新的 laravel 5.1 项目,我正在尝试通过http://localhost/crm/ 访问它 但它只是带来了包含目录内容的页面索引 而不是在我的 routes.php 中映射的页面为

Route::get('/', function () 
    return view('panel');
);

我已检查 httpd.conf 中是否启用了 apache mod_rewrite

LoadModule rewrite_module modules/mod_rewrite.so

DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">

    Options Indexes FollowSymLinks Includes ExecCGI

    AllowOverride All

    Require all granted
</Directory>

那么 crm/public 文件夹中的 .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]
</IfModule>

我也试过改成

Options +FollowSymLinks
RewriteEngine On

RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]

没有成功。

【问题讨论】:

【参考方案1】:

您需要将 Laravel 指向 public 目录才能使其工作。例如,如果您已将 Laravel 安装在 C:/xampp/htdocs/ 目录中,则需要使用以下设置:

DocumentRoot "C:/xampp/htdocs/public"
<Directory "C:/xampp/htdocs/public">

请勿在公用文件夹中编辑.htacces。尝试更改设置并首先访问 localhost 加载 Laravel 网站。

当您编辑完 Apache 配置文件后,您应该重新启动 Web 服务器。

【讨论】:

我这样做了,但现在我遇到了资产(css 和 js)无法加载的问题,除非我将它们移动到公用文件夹。我应该这样做还是有其他方法? CSS 和 JS 只能位于 public 文件夹中。这就是 Laravel 的工作原理。

以上是关于xampp apache重写不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当我在 VirtualHost 中更改 ServerName 时,Apache (xampp) 不起作用

.htaccess 在 xampp 和 Ubuntu 下不起作用

.htaccess 在 xampp (ubuntu) 中不起作用

添加代理通行证后,apache重写规则不起作用

apache vhost设置不起作用

从 Apache 2,2 迁移到 Apache 2.4 后,URL 重写不起作用