【问题标题】:Strange htaccess url rewrite behavior奇怪的 htaccess url 重写行为
【发布时间】:2019-05-16 12:41:30
【问题描述】:

我想把example.com/login改写成example.com/login.php
这曾经在我的旧服务器上工作,因为我在 .htaccess 文件中使用此规则:

RewriteRule ^login$ login.php [L]

当我迁移到新服务器时,此特定规则已停止工作,但如果我将 login 更改为 loginx,例如

RewriteRule ^loginx$ login.php [L]

规则有效,当我转到 example.com/loginx 时看到登录页面

另外,如果我更改文件名,规则也开始起作用

RewriteRule ^login$ loginx.php [L]

如果规则和文件具有相同的名称(在这种情况下为登录),则规则由于我无法理解的原因不起作用,有人知道为什么会发生这种情况以及如何处理吗?

这是完整的.htaccess 文件:

RewriteEngine On
RewriteBase /
RewriteRule ^login$ login.php [L]
RewriteRule ^users$ users.php [L]
RewriteRule ^profile$ me.php [L]

users 也会出现问题(因为文件的名称是 URL)
profile 规则正常工作。

【问题讨论】:

  • 你可以访问 apache .conf 文件吗?
  • 是的,我想补充一点,除了这个之外,所有其他重写规则都在工作
  • 请发布整个.htaccess,可能有冲突的规则
  • 禁用MultiViews,它通常是此类情况的罪魁祸首。

标签: php linux apache .htaccess


【解决方案1】:

感谢 04FS
我刚刚添加了

Options -Multiviews

在我的 htaccess 文件的顶部

【讨论】:

  • 您使用的是哪个版本的 Apache?您是否还有其他基本名称也是loginusers 的文件? (通常情况下,启用 MultiViews,login.phpusers.php 应该仍然被调用,因为这是 MultiViews 所做的 - 但两个受影响的 mod_rewrite 指令将被有效地绕过。)
【解决方案2】:

您是否在 .htaccess 的上方添加了RewriteEngine On

【讨论】:

  • 重写引擎已开启,是的,所有其他重写规则都在工作,如果我更改“登录”一词中的某些内容,规则本身就会开始工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2020-11-06
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多