htaccess在不同的机器上表现不一样

时间:2013-02-21 09:47:59

标签: php apache .htaccess mod-rewrite

我在htaccess中使用了以下重写代码,但是有问题。

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([A-Za-z0-9-_]+)/?$ /$1.php [NC,L,QSA]
RewriteRule ^admin/([A-Za-z0-9\-]+)/?$ /admin/$1.php [NC,L]
RewriteRule ^user-profile/([A-Za-z0-9]+)/?$ /user-profile.php?view=$1 [NC,L]
  

机器A:www.website.com/admin/admin.page [不起作用,404] [admin.page.php有效]

     

机器B:localhost / alias / admin / admin.page [works]

     

机器A:www.website.com/user-profile/username [works]

     

机器B:localhost / alias / user-profile / username [不起作用,302] [user-profile.php?view = username works]

什么出错?

(我在一台机器上使用别名,而不是在另一台机器上使用别名)

  机器A:apache 2.2.22,php 5.4.3 winxp pro

     机器B:apache 2.2.22,php 5.4.3 win7终极

编辑:

  

127.0.0.1 - - [21 / Feb / 2013:11:08:32 +0100]“GET / alias / user-profile / username HTTP / 1.1”302 1373

     

127.0.0.1 - - [21 / Feb / 2013:11:08:33 +0100]“GET / alias / account HTTP / 1.1”302 20

     

127.0.0.1 - - [21 / Feb / 2013:11:08:33 +0100]“GET /别名/公告HTTP / 1.1”200 4157

2 个答案:

答案 0 :(得分:0)

RewriteRule ^admin/admin.([A-Za-z0-9\-]+)/?$ /admin/admin.$1.php [NC,L]

修复了管理部分,现在我需要修复配置文件部分..

答案 1 :(得分:0)

rewriterule不应该触发/ alias url,因为你的Rewriterule将表达式定义为以admin(^ admin)开头,不同的主机(www.website.com和localhost)可能不会到达同一个虚拟主机。 这里的问题更可能是由于网址的差异,而不是你的重写规则。