我正在Ubuntu + Apache +虚拟主机上本地开发一个网站,但是在使用mod_rewite自定义网址时遇到了一些问题。首先我得到一个内部服务器错误,但后来我发现我必须打开mod_rewite,所以我找到了这个教程......
https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite
...换掉他们自己的路径名。
我的虚拟主机站点 - 可用的conf文件codecourse.dev.conf ...
<VirtualHost *:80>
ServerName codecourse.dev
ServerAlias www.codecourse.dev
ServerAdmin admin@codecourse.dev
DocumentRoot /var/www/codecourse.dev/public_html
<Directory /var/www/codecourse.dev/public_html >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
我的.htaccess文件位于公共文件夹中...
Options -MultiViews
RewriteEngine On
RewriteBase /var/www/codecourse.dev/public_html/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
尝试传递网址时,我的apache访问日志:codecourse.dev/public/home/index/Leon
192.168.0.105 - - [20/Nov/2015:08:30:32 +0200] "GET /public/home/index/Leon HTTP/1.1" 404 544 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
注意:仅在传递自定义网址时才会显示此访问错误。否则访问codecourse.dev/public按预期工作。
谁能看到我在这里做错了什么?
答案 0 :(得分:1)
注意,您已在Virtualhost中设置DocumentRoot,删除RewriteBase或将其设置为/public
。
顺便说一句,为了检查自己,您可以在R
添加RewriteRule
标记,然后查看您获得的网址。