提问者:小点点

htaccess在不同机器上的行为不相同


我正在我的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[作品]

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

机器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/usernameHTTP/1.1"302 1373

127.0.0.1--[21/Feb/2013:11:08:33 0100]"GET /alias/accountHTTP/1.1"302 20

127.0.0.1--[21/Feb/2013:11:08:33 0100]"GET /alias/announcementsHTTP/1.1"200 4157


共2个答案

匿名用户

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

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

匿名用户

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