mod_rewrite删除查询字符串并替换为'folder'名称

时间:2012-01-17 00:03:50

标签: php mod-rewrite

所以我已经有了一些改写,但实际上我没有写它们:(我很想了解它们,而不仅仅是寻求帮助。但我对它们一无所知,我感觉不到我花时间学习:(

无论如何我想转

http://wouldyourathers.co.uk/?qid=1231

成:

http://wouldyourathers.co.uk/question/1231

对我来说,qid相当难看。让我们说我可以很容易地改变这个问题,但我仍觉得它不漂亮。

唯一的问题是我已经使用以下内容进行了重写:

RewriteCond %{REQUEST_URI} !dispatch\.php$
RewriteCond /var/www/wyr/docroot%{REQUEST_FILENAME} !-f
RewriteRule ^(/.*)$ /dispatch.php?url=$1 [L,QSA]
RewriteRule ^x\.!dispatch\.php([^b]+)!dispatch\.php$ !dispatch\.php [L,NE]

这会将我的服务器的任何请求指向我的dispatch.php,在这里我基本上乱用了url来以性感的方式显示它们。但我很难过如何编辑查询。一旦进入调度文件,我就可以编辑它并执行我需要实现数据调用的代码。

谢谢(即使这比需要的时间长)

2 个答案:

答案 0 :(得分:1)

在您的其他规则之前,您可以尝试添加此内容:

RewriteRule ^/question/([0-9]+)$ /?qid=$1 [L,QSA]

答案 1 :(得分:0)

现在,当您转到http://wouldyourathers.co.uk/question/1231时,如果不对规则进行任何更改,则/question/1231脚本中的$_GET['url']应该dispatch.php

您可以使用PHP解析该网址并恢复您的问题ID:

$parts = explode('/', $_GET['url');
if ($parts[1] == 'question') {
    $question_id = $parts[2];
    // you could even do $_GET['qid'] = $parts[2];
}