我在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
答案 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)可能不会到达同一个虚拟主机。 这里的问题更可能是由于网址的差异,而不是你的重写规则。