【发布时间】:2014-10-17 22:04:41
【问题描述】:
我开始了一个基于http://www.php-mvc.net/的php项目,我在谷歌上搜索了如何设置我的WAMP Server来启用URL重写。
我正在运行最新版本的 WAMP。
1) 在httpd.conf 上启用mod_rewrite 模块
2) 在httpd-vhosts.conf 我添加了一个虚拟主机
<VirtualHost *:80>
ServerName phpmvc.test
ServerAlias *.phpmvc.test
VirtualDocumentRoot "C:\wamp\www\phpmvc"
ErrorLog "logs\errors.log"
<directory "C:\wamp\www\phpmvc">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</directory>
3) 在我的 hosts 文件中,我添加了主机 127.0.0.1 phpmvc.test
4) 在 .htacces 文件中我有这几行
RewriteEngine on
RewriteRule ^(.*)\/$ index.php?url=$1 [QSA,L]
我在设置文件后重新启动了 Apache,当我转到 phpmvc.test 时它工作正常,但是当我尝试 phpmvc.test/test 时它显示一个错误,指出在此服务器上找不到请求的 URL。
编辑:我尝试使用 RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 但它显示相同的错误
EDIT2:我尝试了 EDIT:我尝试了 Rahil Wazir 的建议,但它仍然无法正常工作。
我有这个控制器文件IndexController.class.php,如果我使用这个 URL 访问它可以工作:phpmvc.test?url=index,但如果我尝试phpmvc.test/index,它会说在服务器上找不到index。
<?php
class IndexController {
public static function index() {
echo "Index controller";
}
}
在 root 上打印 $_GET 和 $_SERVER 我得到一个空的 Array() 和服务器数组。如果我去phpmvc.test/index?url=index 我会得到$_GET["url"] 和$_SERVER [QUERY_STRING] => url=index 上的值。
【问题讨论】:
-
您的 RewriteRule 取决于传入路径的尾随
/斜杠。
标签: php .htaccess mod-rewrite wamp