我在本地主机上使用虚拟主机来运行我的 Laravel 4 项目,这样就无需再输入'本地主机/L4/公共/index.php/路线'。Laravel 还使用.htaccess在其公共目录中创建一个文件。虚拟主机和.htaccess文件如下:
虚拟主机文件
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/L4/public
ServerName www.L4.dev
Alias /billing /var/www/L5/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/L4/public/>
AllowOverride All
</Directory>
</VirtualHost>
Laravel 4 项目的 .htaccess 文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
假设 Laravel 4 项目有一条路线‘路线1’。 这虚拟主机文件和.htaccess文件让我可以访问我的 Laravel 4 项目的‘路线1’使用“www.L4.dev/index.php/route1”。
我在虚拟主机文件中添加了以下内容以摆脱'索引.php' 来自上面给出的地址:
<Directory /var/www/L4/public/>
AllowOverride All
</Directory>
这工作正常,现在我可以访问我的'路线1' 路线Laravel 4 项目使用 'www.L4.dev/route1“”。
但请注意我也在使用别名‘/计费’在我的虚拟主机文件访问另一个项目L5(laravel 5 项目)。
现在假设Laravel 5 项目有一条路线'路线2' 要访问此路线,我必须输入‘www.L4.dev/billing/index.php/route2‘。
我也想摆脱'索引.php' 也从这里,但不知道该怎么做???
我确信我必须对此做点什么虚拟主机文件和.htaccess文件在'公共' L5 目录但不知道做什么以及如何做?
笔记:Laravel 5 项目没有虚拟主机文件,只是使用 Alias 来访问它。
‘L5/Public/’ 目录中的 .htacess 文件
<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>
有人可以在这方面帮助我吗?
答案1
像这样更改您的主 .htaccess 并删除其他的:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Billing
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/billing/(.*) /billing/index.php/$1 [L]
# 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...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(/billing/|)(.*) $1index.php$2 [L]
</IfModule>