由于我是laravel的新手,我已经安装了一个新的副本,提供必要的权限并运行应用程序一切都很好。 现在我已经在apache中创建了一个虚拟主机来删除公共,这也正常工作:
<VirtualHost *:80>
ServerName mobileapp
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/mobileapp/public
<Directory "/var/www/html/mobileapp/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mobileapp_error.log
CustomLog ${APACHE_LOG_DIR}/mobileapp_access.log combined
现在,该网站可以通过http://mobileapp/index.php/pages在本地访问,但如果我从url(http://mobileapp/pages)中删除index.php则无法正常工作。 我的.htaccess文件是:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^ index.php [L] # <----- Tested not working
RewriteRule ^(.*)$ /$1 [L] # <----- neither this one
我也启用了mode_rewrite。任何人都可以告诉我什么是最好和最简单的方法。
答案 0 :(得分:2)
尝试此前端控制器规则:
RewriteRule ^index\.php(/|$) - [L,NC]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)/?$ index.php/$1 [L]
答案 1 :(得分:1)
要调试重写,请将以下内容添加到.htaccess
:
RewriteLog ${APACHE_LOG_DIR}/rewrite.log
RewriteLogLevel 9
然后你可以为你的RewriteRules尝试不同的正则表达式来看看会发生什么。我会尝试以下内容:
RewriteRule ^/index.php(.*)$ http://mobileapp/$1 [L]
请注意,要申请RewriteRule
,首先需要满足RewriteCond
行。在您的情况下,您的条件是!-d
和!-f
,这可能是您的问题。
答案 2 :(得分:0)
我只需将server.php
重命名为index.php
即可使用