重写index.php /之后的所有内容

时间:2011-07-05 23:27:54

标签: mod-rewrite pathinfo

我正在设置一个php mvc框架,我想将域后的任何内容重定向到index.php / $ 1,但它不起作用。我启用了rewrite_module和AllowOverride All,还有其他我缺少的东西吗?

基本上我希望网址从http://www.example.com/foo/bar转到http://www.example.com/index.php/foo/bar,以便我可以从$ _SERVER ['PATH_INFO']

获取它

这就是我所拥有的......

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]

的httpd-vhosts.conf

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot c:/wamp/www
  ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "c:/websites/snugglemvc"
    ServerName www.snugglemvc.com
    <Directory "c:/websites/snugglemvc">
        Order Deny,Allow
        Allow from all
        AllowOverride all
    </Directory>
</VirtualHost>

2 个答案:

答案 0 :(得分:1)

我相信你需要/index.php上的前导斜杠,因为你的正则表达式匹配行首。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

答案 1 :(得分:0)

这是我的httpd.conf文件的问题。我在localhost上没有AllowOverride all。一旦我改变了一切都有效。