13

我在 Wampserver 上安装了 Laravel。目录如下:

C:\wamp\www\laravel

现在 URL 是这样的:

http://localhost/laravel/public/index.php/home/index

所以我使用了以下htaccess代码

Options +FollowSymLinks
Options -indexes
DirectoryIndex index.PHP
RewriteEngine on
RewriteCond $1 !^(index\.PHP|images|robots.txt)
RewriteCond %{REQUEST_ FILENAME} !-f
RewriteCond %{REQUEST_ FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L, QSA]

将 URL 缩减为

http://localhost/laravel/public/home/index

但是 laravel 框架坚持所有应用程序文件都驻留在 public 文件夹中。

所以我想知道我需要在 htaccess 文件中添加(或减去)什么,以便 URL 看起来像

http://localhost/laravel/home/index

谢谢

4

5 回答 5

26

在本地测试时,我会做两件事之一。

  1. 使用以下内容在公共目录下创建一个新的 .htaccess。

    <IfModule mod_rewrite.c>
        RewriteEngine on
    
        RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    
  2. 创建一个新的虚拟主机。使用 WAMP,您可以导航C:\wamp\bin\apache\YOUR APACHE VERSION\conf\extra并找到您的httpd-vhosts.conf文件,在那里您可以看到示例虚拟主机。这是我的一个:

    <VirtualHost *:80>
        DocumentRoot "c:/wamp/www/laravel/public"
        ServerName laravel.dev
        ServerAlias www.laravel.dev
    </VirtualHost>
    

    确保包含您的 vhosts 配置文件。打开您的httpd.conf文件并搜索该vhosts文件,如果它被注释掉,请取消注释包含行。然后我打开 CLI 并输入notepad "C:\windows\system32\drivers\etc\hosts"打开你的主机文件。在提到localhost您的新主机的项目下方。这是一个例子。

    127.0.0.1  laravel.dev
    

    确保您重新启动 Apache 和宾果游戏,您应该能够导航到http://laravel.dev并且您不会有任何烦人的公共目录。这就是我实现它的方式,因为我更喜欢看起来更好看的虚拟主机,而不是冗长的localhostURL。

希望这可以帮助。

于 2012-09-19T00:50:33.807 回答
4

我终于想出了一个办法。首先,我必须通过从 Wamp Aestran 托盘菜单中选择它来打开和编辑我的 Apache httpd.conf。我不得不取消注释该行

#Include conf/extra/httpd-vhosts.conf

之后,我打开了位于

<wampdirectory>/bin/apache/apache.x.y.z/conf/extra/httpd-vhosts.conf

然后我添加了以下几行。

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80


<VirtualHost *:80>
    DocumentRoot "C:/wamp/www"
    ServerName localhost
    Options Indexes FollowSymLinks
    <Directory "C:/wamp/www">
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        #If you want to allow access from your internal network
        # For specific ip addresses add one line per ip address
        #Allow from 192.168.0.100
        # For every ip in the subnet, just use the first 3 numbers of the subnet
        #Allow from 192.168.0
    </Directory>
</VirtualHost>

## must be first so the the wamp menu page loads when you use just localhost as the domain name

<VirtualHost *:80>
    DocumentRoot "C:/wamp/sites/laravel/public"
    ServerName laravel.dev
    Options Indexes FollowSymLinks
    <Directory "C:/wamp/sites/laravel/public">
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        #If you want to allow access from your internal network
        # For specific ip addresses add one line per ip address
        #Allow from 192.168.0.100
        # For every ip in the subnet, just use the first 3 numbers of the subnet
        #Allow from 192.168.0
    </Directory>
</VirtualHost>

下一步是在 C:\windows\system32\drivers\etc 编辑我的主机文件

并添加

127.0.0.1 laravel.dev

然后重新启动 Wamp,它工作。感谢你们为我指明正确的方向。真的很欣赏

于 2012-11-15T18:03:33.087 回答
1

我在本地开发环境中进行这项工作的最简单方法是执行以下操作:

(假设您在 C:\WAMP 中安装了 WAMP)

创建以下文件夹:

c:\wamp\www\laravel

下载 laravel 并将内容放在上面的目录中。如果您可以浏览到 hxxp://localhost/laravel/public 并获得打开屏幕,您将知道您做对了。然而,这还不够好。我们想通过去获得那个屏幕http://localhost/laravel

那么我们执行以下操作:

创建一个包含以下内容的文本文件:

Alias /laravel "c:/wamp/www/laravel/public" 

<Directory "c:/wamp/www/laravel/public">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Allow from all
</Directory>

将此文件另存为laravel.confc:\wamp\alias 目录。

最后,重新启动您的 wampserver。

您现在应该可以上网了http://localhost/laravel

请注意,以上内容仅适用于本地开发环境。

于 2013-01-15T23:42:04.743 回答
0

你最终会得到你的代码和你的公用文件夹驻留在同一个地方,这是大多数人不推荐的。我建议您利用本地网络服务器。

为什么不mysite.dev指向laravel/public目录,这样你就可以http://mysite.dev每次都使用,你也有更干净和更短的 URL?

于 2012-09-16T17:20:03.920 回答
0

作为 WAMP 和 Laravel 的新手,我有点挣扎,但确实让虚拟主机在我的 WIN7PRO 64 位机器上工作。在文件末尾的 WAMPSERVER/Apache/hppd.conf 中,我添加了:

NameVirtualHost *:80

<VirtualHost *:80>
 DocumentRoot C:/webapp/public
 ServerName webapp
 <Directory C:/webapp/public >
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
   Order Deny,Allow
   Allow from All
 </Directory> 
</VirtualHost> 

<VirtualHost *:80>
 DocumentRoot C:/wamp/www
 ServerName localhost
</VirtualHost> 

我补充说:

127.0.0.1 网络应用

到主机文件。(正如网上许多帖子所暗示的那样,我从未成功编辑过 vhosts 文件。)

这些更改允许我通过浏览器访问我的 Laravel 测试应用程序

http://webapp
(and also, via just http://127.0.0.1)

并且,通过以下方式访问我的所有其他网站:

http://localhost/devsite/whatever..
于 2012-10-16T14:52:10.053 回答