URL重写不在目录上工作

时间:2014-04-07 13:07:45

标签: php apache .htaccess mod-rewrite url-rewriting

我正在尝试为我的网站设置网址重写,托管在1& 1上。

这是根目录(./)

上的.htaccess
AddHandler x-mapp-php6 .html .htm
Options +FollowSymlinks
RewriteEngine On

RewriteRule ^404$ /404.html [L]
ErrorDocument 404 /404

RewriteRule ^login$ /login.html [L]
RewriteRule ^register$ /register.html [L]
RewriteRule ^contact$ /contact.html [L]

RewriteRule ^admin$ /admin.html [L]
RewriteRule ^admin/user$ /administration/user.html [L]
RewriteRule ^admin/user/p/([0-9]+)$ /administration/user.html?p=$1 [L]

有一些奇怪的东西:

  • 如果我访问website.com/login,它运作良好(/login.html)
  • 如果我访问website.com/admin,则效果很好(/admin.html)<< li>
  • 如果我访问website.com/admin/user,则转到/admin.html而不是/administration/user.html(就像我 试过网站http://admin)<< li>

即使我更改了订单,或者我删除了行RewriteRule ^admin$ /admin.html [L]并尝试访问website.com/admin或website.com/admin/user,我仍然拥有相同的页面(/admin.html如果url重写是在缓存中或者其他东西。

任何人都有线索?

1 个答案:

答案 0 :(得分:1)

这很可能是由于在您的Apache主机上启用了MultiViews。在.htaccess:

之上使用此行禁用它
Options -MultiViews
  • MultiViews使用选项Apache's content negotiation module,它在mod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php