0

我想发送用户在我的域中键入的所有地址 url

QUERY_STRING 到根目录到文件 index.php

带参数 url=QUERY_STRING

例如,如果用户类型www.mydomain.com/abc/123

这将是www.mydomain.com/index.php/?url=abc/123

我的 htaccess 代码不发送参数 url 我不知道为什么:

# Use PHP5 Single php.ini as default
AddHandler application/x-httpd-php5s .php

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

我的 php 文件:

<?php

    if ($GET['url']){
        $url = $GET['url'];
        echo ($url.'<br />');
    }
?>
we are in root directory.

非常感谢

4

4 回答 4

1

我建议将[NE]标志添加到您的 RewriteRule

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

这将确保您的问号不会被转义。

我对您的 RewriteCond 条件感到有些困惑。正则表达式应匹配任何可能的字符串,包括空字符串,因此条件应始终通过。

于 2012-12-17T08:59:35.070 回答
0

它在$_SERVER$_SERVER['QUERY_STRING']

于 2012-12-17T08:40:42.247 回答
0

您是否需要将其设为查询字符串参数?否则,只需将他的请求重定向到 index.php 并$_SERVER['REQUEST_URI']在 php 中使用,它将包含原始请求的路径。

这是一个适用的.htaccess规则:

DirectoryIndex index.php

RewriteEngine on

RewriteCond %{REQUEST_FILENAME}  -d
RewriteRule  ^.*$  -  [L]

RewriteCond %{REQUEST_FILENAME}  -f
RewriteRule  ^.*$  -  [L]

RewriteRule ^.*$    index.php [L]
于 2012-12-17T08:42:14.067 回答
0
 RewriteEngine on

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f

 RewriteRule ^(.*)$    index.php?url=$1 [L,QSA]

它会工作..

于 2012-12-17T08:51:07.427 回答