【问题标题】:Ubuntu 12.04 Laravel and mod rewriteUbuntu 12.04 Laravel 和 mod 重写
【发布时间】:2013-02-01 06:52:12
【问题描述】:

localhost/mysite/public - 工作 localhost/mysite/public/index.php/tasks - 工作 localhost/mysite/public/tasks - 不工作错误 404

我几乎尝试了所有方法,但仍然有问题。 我有 mod rewrite on - 我用过:sudo a2enmod vhost_alias rewrite 并重新启动服务器

我的 .htaccess 文件:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

我的 etc/apache2/sites-avaliable/default 类似:

 <VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

当我将 AllowOverride 更改为 All 时 - 只有“localhost/”在工作,但我无法运行任何网站,例如“localhost/mysite”。

我尝试在默认文件中添加下一个虚拟主机,例如:

 <VirtualHost *:80>
  DocumentRoot /var/www/mysite/public/
  <Directory /var/www/mysite/public/>
  AllowOverride All
 </Directory>
 </VirtualHost>

但它根本不起作用。

【问题讨论】:

标签: mod-rewrite apache2 laravel laravel-4


【解决方案1】:

首先,如果您使用 Laravel 3,请确保您已更新 /application/config/application.php 并将“应用程序索引”变量设置为空值,例如“”。 https://github.com/laravel/laravel/blob/master/application/config/application.php#L42

如果您已经这样做了,请尝试设置虚拟主机。听起来您使用的是 Apache 2。

首先创建一个额外的 vhosts 文件,例如 /etc/apache2/sites-available/laravel

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName laravel.dev
    ServerAlias *.laravel.dev
    DocumentRoot /home/kriss/projects/laravel/public
</VirtualHost>

然后更新您的 /etc/hosts 文件并添加

127.0.0.1 laravel.dev

然后(这可能是您之前错过的步骤)

sudo a2ensite laravel

这将在 /etc/apache2/sites-enabled 中创建一个指向您的 vhost 配置文件的 sim 链接。 最后重启你的服务器:

sudo service apache2 restart

您应该能够连接到 URL http://laravel.dev,并且您的重写应该可以正常工作。

【讨论】:

  • 我正在使用 laravel 4 并且找不到 application.php 它只是 config/app.php 但里面没有索引
  • 好的,如果您在 L4 上,请尝试在虚拟主机下安装。
  • laravel.dev -- 错误 404 我完全按照你说的做了 - 我检查了启用站点的 laravel 所以它应该可以工作,但不幸的是它不是。我在 Windows 中做到了,但在 ubuntu 中我做到了不能
  • 好的现在我有错误 500 所以它正在连接到站点但它仍然是问题
  • 首先,确保您的虚拟主机配置中的 DocumentRoot 指向除主 /var/www/ 之外的目录other。然后尝试使用 index.html 建立一个简单的空目录,以使 laravel.dev 虚拟主机正常工作。之后,你就可以开始查看 laravel 配置了。
【解决方案2】:

在终端中运行以下命令启用mod_rewrite

sudo a2enmod rewrite

现在重新启动 Apache。

sudo service apache2 restart

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 2012-09-09
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多