【问题标题】:.htaccess rewrite problems 404 error.htaccess 重写问题 404 错误
【发布时间】:2014-12-01 15:04:21
【问题描述】:

我正在使用 .htaccess 来美化我的 URL。我使用此代码:

RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php

DirectoryIndex index.html index.htm index.php index.shtml index.shtm

ErrorDocument 404 /404

但是,当我转到没有 .php 扩展名的任何 URL 时,它会给我一个 404 错误:

/www/alltutorials.comule.com/contact.php

但是我的服务器上确实存在contact.php...我不知道为什么会这样。

【问题讨论】:

  • /www/alltutories.comule.com/contact.php是错误日志中报告的文件吗?

标签: php apache .htaccess mod-rewrite


【解决方案1】:

我认为%{REQUEST_FILENAME} 是“contact.php”,所以%{REQUEST_FILENAME}\\.php 是“contact.php.php”,它不存在。

【讨论】:

  • 那我应该改变什么?
  • @Goombi 他在访问最后没有.php 扩展名的资源,为什么应该是contact.php
【解决方案2】:

你可以试试类似的东西,只改变这一行:

RewriteRule ^(.+)$ $1.php [L,QSA]

【讨论】:

  • 忽略我的最后一条评论:现在它总是转到 404 页面而不是实际页面...
  • 我的意思是它重定向到我创建的实际自定义 404 页面,而不是说“在查找 404 页面时也出现 404 错误”。
  • 那么规则是否有效?因为ErrorDocument 404 /404 表示 404 没有 .php 扩展名。最后一个错误可能在其他地方
  • 可能是文档根目录放错了地方? RewriteCond 可能无法找到 php 文件(测试现在评论该条件,如果是这种情况,您应该会看到它工作)
  • 如果我删除RewriteCond %{REQUEST_FILENAME}\.php -f,它会回到开始状态,如果我删除其他条件,则没有任何变化。
猜你喜欢
  • 2014-05-12
  • 2023-04-08
  • 1970-01-01
  • 2013-11-26
  • 2016-02-05
  • 2021-03-02
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多