mod_rewrite没有使用apache2在Ubuntu上工作

时间:2014-03-16 06:20:01

标签: php mod-rewrite ubuntu web apache2

我似乎无法使用mod_rewrite,但是当我执行phpinfo()时它显示它已启用 我的默认文件如下:

  

      ServerAdmin webmaster @ localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

每次尝试访问时都会收到404错误:

www.example.com/store 

而不是:

www.example.com/store.php

知道发生了什么事吗?

这是我目前的.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

1 个答案:

答案 0 :(得分:2)

你缺少-MultiViews,启用它不会忽略不存在的目录。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

## To internally redirect /anything to /anything.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]