请在你说它重复之前我知道我已经谷歌搜索了几个小时但我不知道问题在哪里我有一个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
答案 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 module
在 mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会投放/file.php
。