【问题标题】:Htaccess Code not working after changing Server更改服务器后 Htaccess 代码不起作用
【发布时间】:2015-09-06 13:47:04
【问题描述】:

我在 htaccess 中使用此代码将任何目录剥离到 index.php

RewriteRule ^.(index.+?\.php)$ /$1 [L,NC,R=301] 

例如

http://www.example.com/toys/index.php
http://www.example.com/battery/upload/index.php
http://www.example.com/xyz/photos/index.php

正在更改将所有这些重定向到

http://www.example.com/index.php

现在,当我更改服务器时 - 此代码导致 404 页 是否有任何替代修改可以建议重新修改代码,以便在域之后和 index.php 之前剥离任何行或目录

【问题讨论】:

  • 检查您的虚拟主机并确保 AllowOverride 已打开(从而允许处理您的 .htaccess 文件)。检查 .htaccess 文件是否正在被解析的一种简单方法是在其中写入大量废话。如果您没有收到 500 错误,则说明它没有被使用。还要检查重写模块是否已安装并启用。
  • 你好 - 检查,重写模式已启用。其他 htaccess 代码字符串也可以使用,除了问题中提到的那个
  • 你不应该改用RewriteRule ^.+?(index\.php)$ /$1 [L,NC,R=301]吗?
  • 感谢 Anubhava,仔细观察后发现该规则也适用于后端管理员部分 - 由于未找到哪个组件 - 发生 404 和 500 错误。如何创建管理员文件夹不会因相同而受到影响的异常。

标签: php regex .htaccess mod-rewrite http-status-code-301


【解决方案1】:

要为administrator 文件夹创建例外,您可以这样做:

RewriteRule ^(?!administrator/).+?(index\.php)$ /$1 [L,NC,R=301]

【讨论】:

  • 那是光彩。谢谢!!
【解决方案2】:

如果我理解正确,这应该可以完成工作:

RewriteRule ^.+/index.php$ index.php [L,NC,R=301] 

附:我喜欢这个工具来测试我的重写规则:Link

【讨论】:

  • 不 - 它不会导致。此代码导致错误 -s 此网页有一个重定向循环,ERR_TOO_MANY_REDIRECTS
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
相关资源
最近更新 更多