.htaccess URL переписать - удалить .php удалить www.конвертировать? id = 10 в / 10 - PullRequest
0 голосов
/ 06 августа 2011

Как видно из названия, мне нужен довольно сложный механизм перезаписи URL для веб-приложения в качестве правила .htaccess.Я искал довольно много сейчас и перепробовал сотни различных правил переписывания.

Итак, в основном это то, что мне нужно:
Пользователь переходит на: http://www.site.com/product.php?id=12
Сервер должен перенаправить на: http://site.com/product/12

Стоит упомянуть:
не все страницы добавляют идентификаторы.
Итак, у меня также есть: http://www.site.com/some/page.php
, который затем следует перенаправить на: http://site.com/some/page

или от http://site.com/anotherone.php до http://site.com/anotherone

Ваша помощь очень ценится и заранее большое спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 06 августа 2011

Я полагаю, что ранее у вас было активным это правило mod_rewrite:

Пользователи переходят на http://site.com/product/12, и в браузере отображается этот URL-адрес, а внутренний и только внутренний сервер обслуживает http://www.site.com/product.php?id=12

Поместите первый RewriteCond и управляйте этим:

   RewriteCond %{ENV:REDIRECT_STATUS} !200
   RewriteRule ^(\w+)\.php\?id=(\d*)$ /$1/$2 [R=301]

И добавьте еще один, чтобы удалить .php, когда заканчивается .php

   RewriteCond %{ENV:REDIRECT_STATUS} !200
   RewriteRule ^(\w+)\.php$ /$1 [R=301]
0 голосов
/ 06 августа 2011
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)\.php$ http://%1/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)\.php\?id=([0-9]+)$ http://%1/$1/$2 [R=301,L]
...