Htaccess查询字符串在本地主机重写



我对查询字符串的重写有一个问题。

我的URL如下:

localhost/www/whours.com/index.php ? comp = login_controller/noAuth

我想把它翻译成:

localhost/www/whours.com/login_controller/noAuth

在我的htaccess中,目前有以下代码:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^comp=(.*)$
RewriteRule ^(.*)$  www/whours.com/%1?

和index.php中的

// Getting the absolute root path
define('ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
include_once("App/Core/Config/config.php");
include_once(CORE_PATH . DIRECTORY_SEPARATOR . "Include/autoloader.php");
//echo ('location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?comp=login_controller/noAuth");
if (!isset($_GET['comp']))
{
    header('location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?comp=login_controller/noAuth");
}
$app = new Application();
$app->run();

当我在localhost中联系URL时,似乎没有应用htaccess,结果是页面错误404与以下URL: localhost/www/whours.com/index.php?comp=login_controller/noAuth

你能给我一个建议或帮助我找到问题在哪里吗?

提前感谢。西蒙

如果您想将http://www.example.com/www/whours.com/login_controller/noAuth重写为http://www.example.com/www/whours.com/index.php?comp=login_controller/noAuth,则必须将其反过来

RewriteRule ^www/whours.com/(.+)$ /www/whours.com/index.php?comp=$1 [L]

虽然这看起来像www/whours.com可能是你的网页的文件根。在这种情况下,URL应该是http://www.example.com/login_controller/noAuth,规则必须看起来像

RewriteRule ^(.+)$ /index.php?comp=$1 [L]

要将http://localhost/www/whours.com/http://www.whours.com重写为/index.php?comp=login_controller/noAuth,请将规则替换为

RewriteRule ^www/whours.com/?$ /index.php?comp=login_controller/noAuth [L]

localhost。这个假设,/www/whours.com是你的文档根目录,也就是说,你有DocumentRoot /path/to/www/whours.com在你的Apache配置文件的某个地方。

在生产服务器(www.whours.com)上,使用

RewriteRule ^$ /index.php?comp=login_controller/noAuth [L]

最新更新