Php htaccess重定向不工作
所以我有一个htaccess条目:Php htaccess重定向不工作,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,所以我有一个htaccess条目: RedirectMatch /([a-zA-Z0-9]+).php /dirA/$1.php 目标是根目录中的任何.php都应该重定向到/dirA/*.php 假设我提出这个要求 domain.com/something.php 它应该改为重定向到 domain.com/dirA/something.php 但是,当我将该条目放入.htaccess文件,然后转到domain.com/something.php时 它反而返回 “页面未正确重定向 Firefox
RedirectMatch /([a-zA-Z0-9]+).php /dirA/$1.php
目标是根目录中的任何.php都应该重定向到/dirA/*.php
假设我提出这个要求
domain.com/something.php
它应该改为重定向到
domain.com/dirA/something.php
但是,当我将该条目放入.htaccess文件,然后转到domain.com/something.php时
它反而返回
“页面未正确重定向
Firefox检测到服务器正在重定向请求
这个地址永远不会完整。”
你知道如何修改我的htaccess来完成我想做的事情吗
更新问题
还有一种方法可以使它仅在文件不在根目录中时重定向…因此,如果x.php在根目录中存在,则为该x.php提供服务,否则重定向到dirA/x.php
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+).php /dirA/$1.php [R=301,L]
这个应该很好
重写规则^(.*)$/subdir/$1
mod_rewrite是一种过分的做法,因为您使用了RedirectMatch
。但是,您的规则有点错误:regex/([a-zA-Z0-9]+).php
匹配包含指定子字符串的所有字符串,因此它匹配“/foo/bar/baz.php”,但也匹配“dirA/foo/bar.php”(甚至“/foo/bar.php/baz.php”I.由于没有停止条件,您的重定向以无休止的循环结束:/dirA/foo.php被重定向到/dirA/foo.php
您可以通过在正则表达式中使用以下命令来纠正这种情况:
RedirectMatch ^/([a-zA-Z0-9]+).php$ /dirA/$1.php
至于你的第二个问题:这可能确实需要重写mod_
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9]+).php$ /dirA/$1.php [R=301]
我还没有测试过它,但这应该可以让你开始了。确保查看详细信息,或者只是四处搜索,因此,关于这一点有很多问题。所以我这样做了,它重定向到/dirA/something.php,这很好,但是当我将dirA更改到自己的目录并保存htaccess时,它仍然重定向到dirA…有什么问题吗思想?