设置mod_rewrite后收到404错误

时间:2015-11-20 07:02:41

标签: apache .htaccess mod-rewrite

我正在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按预期工作。

谁能看到我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

注意,您已在Virtualhost中设置DocumentRoot,删除RewriteBase或将其设置为/public

顺便说一句,为了检查自己,您可以在R添加RewriteRule标记,然后查看您获得的网址。