3

我在我的 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 Ultimate

编辑:

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]“获取/别名/帐户 HTTP/1.1”302 20

127.0.0.1 - - [21/Feb/2013:11:08:33 +0100] “GET /alias/announcements HTTP/1.1”200 4157

4

2 回答 2

0

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

于 2013-08-01T06:47:57.590 回答
0
RewriteRule ^admin/admin.([A-Za-z0-9\-]+)/?$ /admin/admin.$1.php [NC,L]

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

于 2013-02-22T09:54:08.427 回答