0

我有一个我正在开发的网站,只是重写了 mod,所以 url cuadmemo.com/posts.php?title=abctitle 写入 cuadmemo.com/abctitle.html

我遇到的问题是当您的标题带有 ? 在里面做记号。你点击链接

http://www.cuadmemo.com/Are You Doing All You Can to Protect Your Members From Wire Fraud?.html 

它显示为未找到?我知道那个?是导致问题的原因。我正在用 php 编写并具有这种格式的链接(从数据库中提取)

下面是我用来编写语句的 php 代码。

echo "<a name='description' href='http://www.cuadmemo.com/{$row_oneBack['title']}.html'>". $row_oneBack['title'] . '</a>';

我正在使用的重写代码是

RewriteRule (.*)\.html /posts.php?title=$1  

任何建议将不胜感激。提前致谢。

4

2 回答 2

0

这不是一个非常安全的网址。你应该做这样的事情;Are_You_Doing_All_You_Can_to_Protect_Your_Members_From_Wire_Fraud.html

于 2013-03-22T19:46:38.340 回答
0

因为你有一个问号,所以?apache 被欺骗认为你正在尝试拥有类似的东西,$_GET['.html']因此,你的 url 被剪切了。

看来您的 CMS/php 正在查看$_GET['title']. 如果你想有问号,你应该让它查看并解析$_SERVER['REQUEST_URI']

你可以这样:

# infile .htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

然后像这样查找您的查询:

http://example.com/test/page?is=ok&has=get-params

// infile: index.php
// var_dump($_SERVER['REQUEST_URI']);
// you will get string '/test/page?is=ok&has=get-params' (length=41)
于 2013-03-22T19:52:02.533 回答