【问题标题】:htaccess redirect to homepage with bad urlhtaccess 重定向到带有错误 url 的主页
【发布时间】:2014-08-08 01:04:59
【问题描述】:

我有这个重定向 htaccess 代码将 file.php 更改为 /file/,因此 URL 对 SEO 更友好。

RewriteEngine On

# hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

但是,当有人输入错误的网址时,例如 - domain.com/file/whateverblablabla-wrong

我收到内部服务器错误。

我希望它重定向到主页,或者如果我为 404 页面选择特定的 URL,这样我就可以拥有站点地图或其他东西......

非常感谢, -O

【问题讨论】:

  • 这些规则不会产生内部错误。检查您的 Apache error.log 以查看实际错误。
  • 不确定是不是这样:[Thu Aug 07 08:48:19 2014] [error] [client 24.186.15.215] 由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:

尝试在您的 .htaccess 顶部添加这一行:

ErrorDocument 404 /404.php

RewriteEngine On

# hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

这将禁用任何先前设置的 ErrorDocument 指令。

【讨论】:

  • 不,仍然出现错误...查看此 url,只需将 jibberish 添加到 url 的末尾 - www fusionwireless com
  • 我刚试过http://www.fusionwireless.com/123456 并得到标准的 404 错误。所以没有500错误。您应该在新浏览器中对此进行测试。
  • 抱歉,先尝试转到一个页面.. 在导航中.. 然后键入 jibberish 你得到一个不同的错误.. 我知道很奇怪......我也希望它至少重定向到首页...
  • 我只是这样做并点击了几个链接。最后,当我尝试http://www.fusionwireless.com/careers1111 时,我又得到了 404。
  • 是的,没有更多的服务器错误..但它仍然没有找到...我希望它返回主页,甚至返回到带有站点地图的 404.php 之类的特定页面 - 是这可能吗?
猜你喜欢
  • 2013-12-05
  • 2018-05-12
  • 2012-02-28
  • 2023-03-10
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
相关资源
最近更新 更多