我对查询字符串的重写有一个问题。
我的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]