我正在开展一个小小的PHP项目。
为此,创建了一个简单的路由器类,它接受GET参数的值,将其拆分并调用所请求的类和方法。
我的.htaccess文件应该重写请求的网址,以便我可以调用
应该重定向到
到目前为止一切顺利。这是使用以下.htaccess文件:
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [QSA]
但现在,如果我试图访问基本网址
我正被重定向到
我无法解释自己。
老实说,直到现在我还没有使用mod_rewrite工作,但这种行为对我来说很奇怪。
希望有人能帮助我。
谢谢你们。
看起来它与htaccess文件无关。
起初我用validator测试了我的文件,看起来它的效果就像我想要的那样。
我试图删除htaccess文件,但仍然存在同样的问题。 所以我认为它是由apache2 webserver引起的。
我将虚拟主机中的LogLevel设置为debug并从中获取以下信息:
[Sun Jan 15 09:33:41.684274 2017] [authz_core:debug] [pid 2183] mod_authz_core.c(809):[client 10.0.2.2:49743] AH01626:要求所有授权的授权结果:已授予
[Sun Jan 15 09:33:41.684355 2017] [authz_core:debug] [pid 2183] mod_authz_core.c(809):[client 10.0.2.2:49743] AH01626:授权结果:已授予
[Sun Jan 15 09:33:41.684445 2017] [core:info] [pid 2183] [client 10.0.2.2:49743] AH00128:文件不存在:/ var / www / public / var / www / public /index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index .phpvar / WWW /公共/ index.phpvar / WWW /公共/ index.phpvar / WWW /公共/ index.phpvar / WWW /公共/ index.phpvar / WWW /公共/ index.phpvar / WWW /公共/ index.phpvar /www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www/public/index.phpvar/www /public/index.php
这对我来说毫无意义。我的虚拟主机配置文件不包含重写规则。
答案 0 :(得分:0)
引起的问题是因为每次访问localhost时它都会循环。
尝试通过添加[L] Flag来停止此循环,如下面的代码:
RewriteRule ^(.*)$ /index.php?route=$1 [L,QSA]
<强>更新强> 我已经创建了一个适合我的例子:
我创建了一个带有页面参数的主索引页面。因此,像index.php?class=software
这样的链接会将您带到软件页面,而指向index.php?class=test
的链接会将您带到测试页面。使用mod_rewrite会静默地将用户从类/ software /重定向到index.php?class=software
等。
以下是需要进入.htaccess文件才能实现的目的:
RewriteEngine on
RewriteRule ^class/([^/\.]+)/?$ index.php?class=$1 [L]
访问index.php页面时也不会循环。