2017-03-28 19 views
1

我一直在尝试过去2-3小时才能得到这个工作,但我根本没有足够的正则表达式知识。点字符串到PHP页面和查询

我试图让一个URL缩短,所以我想指出一个url像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']; 
    } 
?> 

当访问URL我只是得到一个空白页。但是,如果我在if规则之前回应任何内容,它会显示,因此该页面可以正常工作。 GET的数据是否被传递?或者我应该添加检测网址中的数据的代码?让规则从的.htaccess以及来自Apache的配置工作

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] 

制作斜线可选:

回答

2

使用方法如下。

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

+0

完美,谢谢你的加载!完美的作品。你有可能解释'^ /?(。+)$'的每个部分是什么意思?我想我想要/ admin /重定向到一个不同的页面我只是把它的重写规则放在[L]之前,以防止看到其他规则是正确的? – s1h4d0w

+0

'^ /?'make'/'在开始时是可选的。 '。(。+)'匹配任何一个或多个字符,最后'$'用于输入结束。 – anubhava

+0

@ s1h4d0w请如果答案解决您的问题接受它。 –