【问题标题】:.htaccess rewrite frustrations.htaccess 重写挫折
【发布时间】:2015-11-19 09:46:39
【问题描述】:

我最初是用 PHP 制作我的网站,并使用参数来识别页面/产品。

ex.) http://mysite.com/?pid=my_products&sid=golf_clubs&GTIN=111111111111

我现在转而使用 RoR,我想设置重定向以清理网址

http://mysite.com/my_products/golf_clubs/111111111111

我查看了教程并得出了这个结论:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ ?pid=$1&sid=$2&GTIN=$3 [NC]

我测试了一个 url,它根本没有重定向。我尝试将其放入 .htaccess 文件中进行调试,并将日志文件夹更改为 775,但出现 500 错误:

RewriteLog "/home/myaccount/rails_apps/myapp/log/rewrite.log"
RewriteLogLevel 3

就 .htaccess 中的重写语句而言,这就是我所拥有的:

RewriteEngine On
RewriteLog "/home/myaccount/rails_apps/myapp/log/rewrite.log"
RewriteLogLevel 3
RewriteBase /
RewriteCond %{REQUEST_URI} ^/downloads.*
RewriteRule .* - [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ pid=$1&sid=$2&GTIN=$3 [NC]

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"

* 我正在与 Bluehost 共享托管计划(天哪,我希望他们尽快更新到 Rails 3)

【问题讨论】:

  • 据我了解,您想重定向从旧样式 URL http://mysite.com/?pid=my_products&amp;sid=golf_clubs&amp;GTIN=111111111111 到新样式 http://mysite.com/my_products/golf_clubs/111111111111 吗?如果是这样 - 那么不幸的是,您的规则正在做其他事情。

标签: ruby-on-rails .htaccess url-rewriting


【解决方案1】:

如果我理解正确,您的规则倒退了。您想捕获旧 URL 并将它们重写为新格式,对吗?在这种情况下,您需要这样:

RewriteRule ^\?pid=(\w+)\&sid=(\w+)\&GTIN=(\w+) /$1/$2/$3 [NC,R=301,L]

添加 301 状态将告诉用户代理(包括行为良好的搜索机器人)您的规范 URL 已永久更改。

【讨论】:

  • 这行不通 -- RewriteRule 不能以这种方式处理查询字符串 -- 请改用 RewriteCond
  • 在考虑了您的两个 cmets 之后,它处于重定向的位置,但当不存在第二个和第三个参数时添加双斜杠“//”。 RewriteCond %{QUERY_STRING} ^pid=(\w+)(?:\&sid=(\w+))?(?:\&GTIN=(\w+))?重写规则 ^$ %1/%2/%3 [NC,R=301,L]
  • @Jake 在这种情况下(当缺少某些参数时)仅按该顺序为 3、2 和 1 参数创建 3 个单独的规则。否则,您将不得不在您的 RoR 应用程序中发出重定向,因为我不知道如何在缺少参数时插入默认值。
  • @Jake 我完全不确定这是否可行(我现在没有 Apache 来测试它),但试试这个:RewriteRule ^$ %1(?%2/)%2(?%3/)%3 [NC,R=301,L] - 我看到这个用过对于类似 Apache 的重写模块——它应该仅在存在 2nd/3rd 参数时插入斜杠
猜你喜欢
  • 2011-02-24
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多