.htaccess不会根据需要重写

时间:2012-08-16 15:17:33

标签: apache .htaccess

我的.htaccess不会像我想要的那样重写干净的网址。它不是按照指示做的,而是给我一个404错误!

我想要这个:

http://localhost/somepossiblepath

将路由到此:

http://localhost/index.php?route=somepossiblepath

目前,这是我的htaccess文件:

RewriteEngine On

RewriteCond ${REQUEST_FILENAME} !-d
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-l

RewriteRule ^/(.+)$ /index.php?route=$1 [QSA,L]

我有一个当前的脚本测试,看它是否会起作用:

<?php echo $_REQUEST['route'] ?>

当我输入/index时它会起作用,但是当我输入其他内容时它不会起作用。

任何帮助?

1 个答案:

答案 0 :(得分:0)

在.htaccess文件中,由规则regexp匹配的字符串剥离了基本目录(/的情况下为DOCROOT/.htaccess)。因此^/(.*)$将不匹配。你需要什么,例如:

RewriteEngine On

RewriteRule ^index\.php - [L]

RewriteCond ${REQUEST_FILENAME} !-d
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ /index.php?route=$1 [QSA,L]