apache mod_rewrite无法正常工作

时间:2015-09-19 04:29:27

标签: php apache .htaccess mod-rewrite

请在你说它重复之前我知道我已经谷歌搜索了几个小时但我不知道问题在哪里我有一个centos服务器

Server version: Apache/2.2.27 (Unix)
Server built:   Jul 26 2015 04:33:04

文件位于:

/home/user/public_html

ls -la:

index.php includes view.php .htaccess ...

当我尝试打开网页site.com/view/test时我做了

tail -f /var/log/httpd/error_log

但没有错误

这是我的规则

RewriteEngine on
RewriteBase /
RewriteRule ^view/$ view.php
RewriteRule ^view$ view.php
RewriteRule ^view/(\w+)?$ view.php?cat=$1

它在localhost(ubuntu 14.04桌面)上运行正常。

我访问时在服务器上

  

site.com/view

很好,并告诉我view.php但是

  

site.com/view/test

不会给我view.php?cat = test

1 个答案:

答案 0 :(得分:1)

您的正则表达式似乎是一个问题,因为您在(\w+)?的最后一个规则view/之后^view/$导致^view/(\w+)?规则首先匹配,因为它始于{{1}之前规则

请尝试以下规则:

Options -MultiViews
RewriteEngine on
RewriteBase /

RewriteRule ^view/?$ view.php [L,NC]
RewriteRule ^view/(\w+)/?$ view.php?cat=$1 [L,QSA,NC]

MultiViews使用选项Apache's content negotiation modulemod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php