.htaccess重写挫折

时间:2011-07-01 03:53:59

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

我最初用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]

我测试了一个网址,它根本没有重定向。我已经尝试将它放在.htaccess文件中进行调试并将日志文件夹chmodded到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共享托管计划(好的gawd,我希望他们很快就会更新到Rails 3)

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你就会倒退你的规则。您想捕获旧URL并将其重写为新格式,对吗?在这种情况下,你想要这个:

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

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