【问题标题】:URL rewrite works with 301 or absolute path but not withoutURL 重写适用于 301 或绝对路径,但并非没有
【发布时间】:2013-10-18 10:39:51
【问题描述】:

我试图在访问诸如http://www.mysite.com/booking/ZHTU78 之类的网址时向用户显示http://www.mysite.com/booking-request?code=### 的内容

我确信这很简单,但我不明白为什么以下规则对我不起作用。我得到的只是一个 404 错误。

RewriteRule ^booking\/([\w\d]+)$ /booking-request?code=$1 [L]

如果我将规则更改为

RewriteRule ^booking\/([\w\d]+)$ /booking-request?code=$1 [L,R=301]

它可以工作,但实际上将浏览器重定向到 http://www.mysite.com/booking-request?code=### 会产生明显的不良副作用

我还尝试更改要重定向到单个 / 的 url,以确保它应该正在寻找现有页面,但没有更改。

可能提到这是在一个drupal网站上,/booking-request本质上是一个基本页面,所以drupal无论如何都会有一些功能来重定向这个页面,但是我不会认为在这种情况下应该很重要。

编辑 这是整个 htaccess 文件的链接:http://pastebin.com/KPE6DK6N

【问题讨论】:

  • madewithlove 进行检查,我通过删除斜杠上的转义符使其正常工作:^booking/
  • 也共享所有其他 htaccess 规则。其中一个可能在这里干扰。
  • @icabod 不幸的是,这不起作用。我还添加了所有 htaccess 规则的 pastebin。它几乎是一个标准的 drupal htaccess,有几个附加功能。

标签: .htaccess mod-rewrite redirect drupal


【解决方案1】:

尝试将规则更改为:

RewriteRule ^booking/([\w\d]+)$ /booking-request?code=$1 [L]

RewriteRule ^booking/([\w\d]+)$ http://www.mysite.com/booking-request?code=$1 [L]

它应该可以工作。

【讨论】:

  • 第一个建议仍然显示404,第二个建议与在规则末尾添加R=301 的效果相同。它确实重定向,但是 url 随之改变,这不是我想要的。
  • mysite.com/booking-request?code=### - 什么是页面类型?意见?自定义模块?你能找到这个网址的同义词路径吗?
  • 该页面是基本页面内容类型。我不确定同义词路径是什么,或者我可能会在哪里寻找它?
  • "基本页面" - 是节点类型吗?为什么节点需要参数'code'?你可以看看同义词 - /admin/config/search/path
  • 对不起,内容类型称为基本页面,在数据库中只是保存为页面。同义词是 booking-request,它链接到 node/4527。我使用 url 参数,因为它的值是动态的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2015-12-13
  • 2011-07-12
  • 2011-06-08
  • 2020-10-01
  • 2014-12-07
相关资源
最近更新 更多