我最初用PHP创建了我的网站,并使用参数进行页面/产品识别。
ex.) http://mysite.com/?pid=my_products&sid=golf_clubs>IN=111111111111
我现在已经转移到使用RoR了,我想设置重定向来清理网址
http://mysite.com/my_products/golf_clubs/111111111111
我看了教程并得出了这个:
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ ?pid=$1&sid=$2>IN=$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>IN=$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)
答案 0 :(得分:0)
如果我理解正确,你就会倒退你的规则。您想捕获旧URL并将其重写为新格式,对吗?在这种情况下,你想要这个:
RewriteRule ^\?pid=(\w+)\&sid=(\w+)\>IN=(\w+) /$1/$2/$3 [NC,R=301,L]
添加301状态会告诉用户代理(包括行为良好的搜索机器人)您的规范网址已永久更改。