我有3个文件:.htaccess
:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cats.php?name=$1
index.php
:
<?php
echo 'index';
cats.php
:
<?php
echo $_GET['name'] . ' < '.$_GET["name"];
我遇到的问题是,当我在site.com上时,它会将我重定向到cats.php
始终。但是在我的localhost上,如果传递参数,它会重定向我 例如:
site.com/some-argument
答案 0 :(得分:0)
这是可能导致问题的一行:
RewriteCond %{REQUEST_FILENAME} !-f
这意味着只有在请求的文件名找不到时才执行RewriteRule。
在不起作用的本地主机上,您可能在httpd.conf(或.htaccess)中有以下设置:
DirectoryIndex index.php
由于上述设置,当您输入http://site.com
时,默认情况下会尝试显示index.php
,并且由于Apache找到了您的上述RewriteCond,因此返回false并且您的RewriteRule不会触发。
用于测试RewriteCond上方的注释,看看是否会改变行为。