在web.php中我有这个
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
],
],
此文件夹的apache配置如此php.conf文件
<VirtualHost *:80>
AssignUserId alexzander alexzander
ServerName localhost
DocumentRoot /home/alexzander/Dropbox/study/3year/2/php/
<Directory /home/alexzander/Dropbox/study/3year/2/php/>
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
Order allow,deny
Allow from all
Require all granted
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
当我尝试访问localhost/basic/images/list
我明白了
The requested URL /index.php was not found on this server.
当我在基本工作之后添加index.php时
localhost/basic/index.php/images/list
我如何获得漂亮的网址?我认为appache重写规则不起作用,但不知道为什么。
in error.log
[Thu Jun 02 20:46:13.811518 2016] [:error] [pid 25046] [client 127.0.0.1:52450] script '/home/alexzander/Dropbox/study/3year/2/php/index.php' not found or unable to stat, referer: http://localhost/basic/index.php/images/list
但这是因为文档根目录在apache里面/home/alexzander/Dropbox/study/3year/2/php/
我认为没问题
apache2ctl -M
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
mime_module (shared)
mpm_itk_module (shared)
mpm_prefork_module (shared)
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
答案 0 :(得分:6)
UrlManager ..
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
],
],
然后在项目文件夹中添加名为.htaccess
的新文件(不在受保护的文件夹中)。
并将以下代码添加到您的.htaccess
文件
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
这对我有用,并删除了index.php