将字符串指向php页面和查询

时间:2017-03-28 11:00:22

标签: php .htaccess

我一直在尝试过去2-3小时才能完成这项工作,但我对正则表达式的了解还不够。

我正在尝试缩短网址,因此我想将domain.com/d5Ds93X之类的网址指向类似domain.com/view.php?s=d5Ds93X的网址

我一直在搞乱我的.htaccess文件并立即使用:

RewriteEngine on
RewriteBase /
RewriteRule /(.*?)$ /view.php?s=$1 [L]

这种作品,它指向正确的文件,但字符串(d5Ds93X)未传递。我的view.php文件看起来像这样(出于测试目的):

<?php
    if (isset($_GET['s']) && ctype_alnum($_GET['s'])) {
        echo $_GET['s'];
    }
?>

访问网址时,我只是得到一个空白页面。但是,如果我在if规则之前回显任何内容,它会显示,所以页面工作得很好。 GET的数据是否会被传递?或者我应该添加检测网址中数据的代码吗?

1 个答案:

答案 0 :(得分:2)

像这样使用:

RewriteEngine on
RewriteBase /

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.+)$ view.php?s=$1 [L,QSA]

使前导斜杠可选,以便规则适用于.htaccess以及Apache配置。

还限制规则跳过文件和目录。