通过带有斜杠的url传递参数

时间:2014-02-19 23:13:02

标签: php .htaccess

我试图通过url传递变量而不包括?var1 = test但是用/ test替换了。我有以下代码:

$pathinfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['REDIRECT_URL'];    
$params = preg_split('|/|', $pathinfo, -1, PREG_SPLIT_NO_EMPTY);
print_r($params);

这个问题是,如果我把它放在index.php文件中,我必须包含文件名。

我得到了什么: http://example.com/index.php/test

我想要的: http://example.com/test

我该怎么办?

3 个答案:

答案 0 :(得分:2)

在根文件夹中添加.htaccess文件并粘贴此代码

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

确保启用mod_rewrite

答案 1 :(得分:0)

What should I do?

使用mod_rewrite.htaccess重写规则。您的规则可能如下所示:

(来自Wordpress的例子):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f    # Existing File
RewriteCond %{REQUEST_FILENAME} !-d    # Existing Directory
RewriteRule . /index.php [L]

更多示例here以及更多“简单”解释here

答案 2 :(得分:0)

尝试使用以下内容在您的webroot中创建名为.htaccess的文件:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

还要确保启用了modrewrite。