我有一个名为quick-mvc的虚拟主机,我在根目录中有一个.htaccess文件。 我已经激活了mod_rewrite.so。我知道mod_rewrite不推荐,但它是我现在使用的,并希望得到这个工作。谢谢!
.htaccess文件
RewriteEngine on
RewriteCond %[REQUEST_FILENAME] !-d
RewriteCond %[REQUEST_FILENAME] !-f
RewriteCond %[REQUEST_FILENAME] !-l
RewriteRule ^(.+)$ index.php?url=$1 [L]
浏览器ex 1中的
http://quick-mvc/one/two/three/test
$ _ GET [' url']返回" index.php"
浏览器ex 2中的
http://quick-mvc/index.php/one/two/three/test
$ _ GET [' url']返回" index.php / one / two / three / test"
我想要的是什么 我想返回ex 2显示的内容,即使我是否像ex 1一样添加index.php。我也希望index.php不显示。虽然我可以用php轻松编写代码。
答案 0 :(得分:0)
你的例子让我想起了Drupal如何使用url重写到他们的前端控制器。检查Drupal 7,他们改变了他们这样做的方式。
Drupal 7 .htaccess(剥离):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
你可以采取类似的方法,然后在index.php中:
<?php
$url = $_SERVER['REQUEST_URI'];
$parts = parse_url($url);
php函数parse_url应该为你提供路径和查询字符串。
$your_url = $parts['path'];
如果放在网络根目录中,我们会访问此网址:
http://example.com/foo/bar/baz?bat=qux
parse_url给出:
array
'path' => string '/foo/bar/baz'
'query' => string 'bat=qux'
查看其他一些框架,了解他们是如何做到的。