【问题标题】:Special characters in mod_rewrite urlmod_rewrite url 中的特殊字符
【发布时间】:2012-10-31 03:14:04
【问题描述】:

我想要这个网址:

http://www.mydomainblabla.com/s/can+you+drill+shrinky+dinks?.html

改写成这个:

http://www.mydomainblabla.com/search.php?q=can+you+drill+shrinky+dinks?

我在我的 .htaccess 中使用这个 mod_rewrite 规则来完成这个

RewriteRule ^s/(.+).html$ search.php?q=$1 [L,QSA]

但是,结果不是我想要的,当我转到第一个 url 时,我收到一个找不到页面的消息。

当我访问这个网址时出现同样的问题:

http://www.mydomainblabla.com/s/http://www.zakgeldnodig.nl/.html

应该改写成这个:

http://www.mydomainblabla.com/search.php?q=http://www.zakgeldnodig.nl/

我应该对我的 .htaccess 进行哪些修改才能使其正常工作?

【问题讨论】:

  • 重写后的 URL 应该是什么样子?
  • @Miguel-F:就像问题一样?他呈现它们的顺序可能有点奇怪,但都在那里。
  • 重写后的网址有允许问号等特殊字符。
  • 也许我理解错了。他给出了一个 URL 的例子以及它是如何被重写的,但它们不起作用。我没有看到一旦重写工作 URL 的示例。
  • 对不起,我的英语不正确米格尔。如果查询中不是特殊字符,则 URL 重写规则起作用。示例:mydomainblabla.com/search.php?q=car url reweite 为mydomainblabla.com/s/car.html 但如果查询带有问号或其他特殊字符,例如:mydomainblabla.com/search.php?q=car? url 重写是 mydomainblabla.com/s/car?.html 并且不起作用

标签: .htaccess url-rewriting


【解决方案1】:

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+s/(.+?)\.html [NC]
RewriteRule ^ search.php?q=%1 [L,NE]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 2010-09-21
    • 2015-10-21
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2012-05-18
    相关资源
    最近更新 更多