1

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>

但它根本不起作用。

4

2 回答 2

4

首先,如果您使用的是 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,并且您的重写应该可以正常工作。

于 2013-02-16T10:39:55.603 回答
4

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

sudo a2enmod rewrite

现在重新启动 Apache。

sudo service apache2 restart
于 2013-03-26T22:17:14.547 回答