правило перезаписи htaccess, старый URL на новый - PullRequest
0 голосов
/ 29 сентября 2011

Немного помощи товарищам по SO.

Что у меня есть на данный момент (на основе некоторого кода, который я использовал для URL другого типа).

Я хочу, чтобы первый URL былперенаправление на вторую, после которой строка запроса не включается

Это то, что мне нужно до сих пор.

RewriteRule ^(page.php?id=missionstatement+)/?$ http://example.com/why/mission-statement [R=301,L]
RewriteRule ^(page.php?id=ofsted+)/?$ http://example.com/how/ofsted-report [R=301,L]
RewriteRule ^(page.php?id=governingbody+)/?$ http://example.com/governors [R=301,L]

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Вот правило (перенаправит 1 URL):

RewriteCond %{QUERY_STRING} ^id=whatever
RewriteRule ^page\.php$ http://%{HTTP_HOST}/how/somehow? [R=301,L]
  1. Это правило предназначено для размещения в .htaccess в корневой папке сайта. При размещении в другом месте может потребоваться небольшая настройка.

  2. Я использовал %{HTTP_HOST} - он будет перенаправлен на тот же домен, что и запрошенный URL. Если доменное имя должно отличаться, замените его на точное доменное имя.

  3. ? в конце нового URL избавит от существующей строки запроса.

0 голосов
/ 29 сентября 2011

Ahoy!

Дайте этому водовороту:

#check mod_rewrite is enabled
<IfModule mod_rewrite.c>

#enable mod rewrite
RewriteEngine On

#set working directory
RewriteBase /

#force trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R=301,L]

#bootstrap index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page.php\?id=(.*)$ http://www.willans.com/page.php/$1 [R=310,L]

#end mod rewrite check
</IfModule>

Прошло много времени с тех пор, как я работал с любым веб-разработчиком, но это должно быть как минимум толчком в правильном направлении;)

...