.htaccess переписать разочарования - PullRequest
0 голосов
/ 01 июля 2011

Я сделал свой сайт на PHP изначально и использовал параметры для идентификации страницы / продукта.

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

Теперь я перешел к использованию RoR и хотел бы настроить перенаправления для очистки URL-адресов

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)

1 Ответ

0 голосов
/ 01 июля 2011

Если я вас правильно понимаю, ваше правило задом наперед.Вы хотите перехватить ваши старые URL и переписать их в новый формат, правильно?В этом случае вам понадобится следующее:

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

Добавление статуса 301 сообщит пользовательскому агенту (включая поисковых роботов с хорошим поведением), что ваши канонические URL-адреса навсегда изменились.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...